導航:首頁 > 編程語言 > java並發如何處理

java並發如何處理

發布時間:2024-04-04 22:58:05

java中高訪問量高並發的問題怎麼解決

你指的高並發量大概有多少?

幾點需要注意:

  1. 盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與資料庫的交互,提高性能。

  2. 用jprofiler等工具找出性能瓶頸,減少額外的開銷。

  3. 優化資料庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。

  4. 優化資料庫結構,多做索引,提高查詢效率。

  5. 統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。

  6. 能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。

  7. 解決以上問題後,使用伺服器集群來解決單台的瓶頸問題。

基本上以上述問題解決後,達到系統最優。

至於樓上有人提到別用JAVA來做,除非是低層的連接數過大(如大量的埠佔用需求),這種情況下考慮直接C來寫,其他的可以用JAVA來做。

Ⅱ JAVA怎麼處理線程池中線程的並發問題

可以通過以下原則解決:
1、設置線程池的最大線程數
2、設置線程池的並發處理線程數量
3、設置線程池最大的隊列線程數
4、做好線程池的線程清理工作
做好這幾點,理論上沒問題了,具體還得看編程者代碼的質量。
PS:伺服器不可能為每一個請求都創建線程,得考慮到最大負載,當達到臨界值的時候,伺服器返回繁忙狀態,拒絕服務即可,當然這是簡單的處理辦法。

Ⅲ 面試Java開發時問到高並發怎麼處理的,還有sql優化有哪些辦法,有哪位大神知道啊,新手!!

Java開發高並發的處理方法:

  1. 最基礎的地方做起,優化我們寫的代碼,減少必要的資源浪費


    避免頻繁的使用new對象,對於整個應用只需要存在一個實例的類,我們可以使用單例模式。對於String連接操作,使用StringBuffer或StringBuilder,對於工具類可以通過靜態方法來訪問。


    避免使用錯誤的方式,盡量不用instanceof做條件判斷。使用java中效率高的類,比如ArrayList比Vector性能好。

  2. 圖片伺服器分離


    對於web伺服器來說,圖片是最消耗資源的,於是我們有必要把圖片與頁面進行分離,我們把圖片放到獨立的圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片的問題而崩潰。在圖片伺服器上,我們可以對不同的配置進行優化。

  3. 緩存


    具體接觸過的緩存機制是hibernate的緩存機制。為了避免每次都向資料庫中取得數據,我們把用戶常常訪問到的數據放到內存中,甚至緩存十分大的時候我們可以把內存中的緩存放到硬碟中。還有高級的分布式緩存資料庫使用,都可以增加系統的抗壓力。

  4. 分批傳送

在做某項目的時候,一次傳遞的參數太多,而且資料庫規定一次最多傳遞的參數最多是三萬條,當時有五萬條記錄,那怎麼傳送呢?最終是分批傳送,電梯里一次乘不下那麼多的人,會報超重的bug,那就分批把人送上去。

還有一次在考試系統中,如果那麼多的考試人員同時提交到資料庫中,資料庫的壓力增大,有時會被down掉,當時採用的方法是使用ajax非同步傳輸,沒有等待考生點擊提交按鈕的時候,就把考生的答案自動提交,這樣也避免了突然斷電考生前面做過的題出現丟失的現象。

DB優化

Ⅳ Java如何處理大量的並發請求

在web應用中,同一時間有大量的客戶端請求同時發送到伺服器,例如搶購、秒殺等。這個時候如何避免將大量的請求同時發送到業務系統。
第一種方法:在容器中配置最大請求數,如果大於改請求數,則客戶端阻塞。該方法有效的阻止了大量的請求同時訪問業務系統,但對用於不友好。
第二種方法:使用過濾器,保證一定數量的請求能夠正常訪問系統,多餘的請求先跳轉到排隊頁面,由排隊頁面定時發起請求。過濾器實現如下:
<pre name="code" class="java">public class ServiceFilter implements Filter { private static final int MAX_COUNT = 20; private int filterCount = 0; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("before"+filterCount); if(filterCount > MAX_COUNT) { //請求個數太多,跳轉到排隊頁面 request.getRequestDispatcher("index.jsp").forward(request, response); } else { //請求個數加1 filterCount ++; chain.doFilter(request, response); //訪問結束,請求個數減1 filterCount --; } }
}

Ⅳ 濡備綍澶勭悊java楂樺苟鍙戦棶棰

濡備綍澶勭悊騫跺彂鍜屽悓姝
浠婂ぉ璁茬殑濡備綍澶勭悊騫跺彂鍜屽悓鍚屾ラ棶棰樹富瑕佹槸閫氳繃閿佹満鍒躲

鎴戜滑闇瑕佹槑鐧斤紝閿佹満鍒舵湁涓や釜灞傞潰銆

涓縐嶆槸浠g爜灞傛′笂鐨勶紝濡俲ava涓鐨勫悓姝ラ攣錛屽吀鍨嬬殑灝辨槸鍚屾ュ叧閿瀛梥ynchronized錛岃繖閲屾垜涓嶅湪鍋氳繃澶氱殑璁茶В錛

鎰熷叴瓚g殑鍙浠ュ弬鑰:http://www.cnblogs.com/xiohao/p/4151408.html

鍙﹀栦竴縐嶆槸鏁版嵁搴撳眰嬈′笂鐨勶紝姣旇緝鍏稿瀷鐨勫氨鏄鎮茶傞攣鍜屼箰瑙傞攣銆傝繖閲屾垜浠閲嶇偣璁茶В鐨勫氨鏄鎮茶傞攣錛堜紶緇熺殑鐗╃悊閿侊級鍜屼箰瑙傞攣銆

鎮茶傞攣(Pessimistic Locking):

鎮茶傞攣錛屾e傚叾鍚嶏紝瀹冩寚鐨勬槸瀵規暟鎹琚澶栫晫錛堝寘鎷鏈緋葷粺褰撳墠鐨勫叾浠栦簨鍔★紝浠ュ強鏉ヨ嚜 澶栭儴緋葷粺鐨勪簨鍔″勭悊錛変慨鏀規寔淇濆畧鎬佸害錛屽洜姝わ紝

鍦ㄦ暣涓鏁版嵁澶勭悊榪囩▼涓錛屽皢鏁版嵁澶勪簬閿佸畾鐘舵併

鎮茶傞攣鐨勫疄鐜幫紝寰寰渚濋潬鏁版嵁搴撴彁渚涚殑閿佹満鍒訛紙涔熷彧鏈夋暟鎹搴撳眰鎻愪緵鐨勯攣鏈哄埗鎵嶈兘 鐪熸d繚璇佹暟鎹璁塊棶鐨勬帓浠栨э紝鍚﹀垯錛屽嵆浣垮湪鏈緋葷粺

涓瀹炵幇浜嗗姞閿佹満鍒訛紝涔熸棤娉曚繚璇佸栭儴緋 緇熶笉浼氫慨鏀規暟鎹錛夈

涓涓鍏稿瀷鐨勫氳禆鏁版嵁搴撶殑鎮茶傞攣璋冪敤錛

select * from account where name=鈥滶rica鈥 for update

榪欐潯 sql 璇鍙ラ攣瀹氫簡 account 琛ㄤ腑鎵鏈夌﹀悎媯緔㈡潯浠訛紙 name=鈥滶rica鈥 錛夌殑璁板綍銆

鏈嬈′簨鍔℃彁浜や箣鍓嶏紙浜嬪姟鎻愪氦鏃朵細閲婃斁浜嬪姟榪囩▼涓鐨勯攣錛夛紝澶栫晫鏃犳硶淇鏀硅繖浜涜板綍銆
Hibernate 鐨勬偛瑙傞攣錛屼篃鏄鍩轟簬鏁版嵁搴撶殑閿佹満鍒跺疄鐜般
涓嬮潰鐨勪唬鐮佸疄鐜頒簡瀵規煡璇㈣板綍鐨勫姞閿侊細

String hqlStr ="from TUser as user where user.name='Erica'";

Query query = session.createQuery(hqlStr);

query.setLockMode("user",LockMode.UPGRADE); // 鍔犻攣

List userList = query.list();// 鎵ц屾煡璇錛岃幏鍙栨暟鎹

query.setLockMode 瀵規煡璇㈣鍙ヤ腑錛岀壒瀹氬埆鍚嶆墍瀵瑰簲鐨勮板綍榪涜屽姞閿侊紙鎴戜滑涓 TUser 綾繪寚瀹氫簡涓涓鍒鍚 鈥渦ser鈥 錛夛紝榪欓噷涔熷氨鏄瀵

榪斿洖鐨勬墍鏈 user 璁板綍榪涜屽姞閿併

瑙傚療榪愯屾湡 Hibernate 鐢熸垚鐨 SQL 璇鍙ワ細
select tuser0_.id as id, tuser0_.name as name, tuser0_.group_id
as group_id, tuser0_.user_type as user_type, tuser0_.sex as sex
from t_user tuser0_ where (tuser0_.name='Erica' ) for update
榪欓噷 Hibernate 閫氳繃浣跨敤鏁版嵁搴撶殑 for update 瀛愬彞瀹炵幇浜嗘偛瑙傞攣鏈哄埗銆
Hibernate 鐨勫姞閿佹ā寮忔湁錛
Ø LockMode.NONE 錛 鏃犻攣鏈哄埗銆
Ø LockMode.WRITE 錛 Hibernate 鍦 Insert 鍜 Update 璁板綍鐨勬椂鍊欎細鑷鍔ㄨ幏鍙
Ø LockMode.READ 錛 Hibernate 鍦ㄨ誨彇璁板綍鐨勬椂鍊欎細鑷鍔ㄨ幏鍙栥
浠ヤ笂榪欎笁縐嶉攣鏈哄埗涓鑸鐢 Hibernate 鍐呴儴浣跨敤錛屽 Hibernate 涓轟簡淇濊瘉 Update
榪囩▼涓瀵硅薄涓嶄細琚澶栫晫淇鏀癸紝浼氬湪 save 鏂規硶瀹炵幇涓鑷鍔ㄤ負鐩鏍囧硅薄鍔犱笂 WRITE 閿併
Ø LockMode.UPGRADE 錛氬埄鐢ㄦ暟鎹搴撶殑 for update 瀛愬彞鍔犻攣銆
Ø LockMode. UPGRADE_NOWAIT 錛 Oracle 鐨勭壒瀹氬疄鐜幫紝鍒╃敤 Oracle 鐨 for
update nowait 瀛愬彞瀹炵幇鍔犻攣銆
涓婇潰榪欎袱縐嶉攣鏈哄埗鏄鎴戜滑鍦ㄥ簲鐢ㄥ眰杈冧負甯哥敤鐨勶紝鍔犻攣涓鑸閫氳繃浠ヤ笅鏂規硶瀹炵幇錛
Criteria.setLockMode
Query.setLockMode
Session.lock

閱讀全文

與java並發如何處理相關的資料

熱點內容
當通過ssh遠程連接彈性雲伺服器時 瀏覽:654
12306哪個app 瀏覽:679
免費網站電視劇電影全免費在線觀看 瀏覽:737
如何快速清除app廣告 瀏覽:716
單片機按鍵外部中斷 瀏覽:560
單片機的usb供電 瀏覽:256
更改android解析度 瀏覽:186
phpstaticfinal 瀏覽:695
成人倫理風月片電影 瀏覽:294
禁播愛情片 瀏覽:21
動漫電影免費版大全 瀏覽:14
java什麼是this 瀏覽:811
拍攝指南by小說製造機txt下載 瀏覽:738
豆瓣pdf 瀏覽:723
春宮妖姬演員表 瀏覽:112
韓國情愛電影在線 瀏覽:812
程序員那麼可愛顧墨吃醋 瀏覽:201
伺服器未測速怎麼辦 瀏覽:15
男主角林晨的都市小說 瀏覽:899
百度文庫系統源碼nodejs 瀏覽:997