java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

多線程技術

上集回顧

本程序汪前面寫了4篇關於鎖的實戰應用開發,軟件這東西就是一個系統科學,你知道分佈式高併發情況需要考慮鎖來防止數據的不一致性,那麼多線程知識你更要學習掌握。會不會多線程,是區分高級開發還是一般開發的標準,很多程序汪工作三四年了可能也沒接觸過多線程實戰,如今大點的互聯網公司多線程是必須掌握。像今日頭條這樣擁有龐大用戶量的APP,後端邏輯代碼肯定到處是多線程應用。廢話多了,馬上開始。

背景

串行執行業務早就不能讓用戶滿意了,你打開今日頭條APP如果刷新10秒還沒數據加載完成,用戶早就拋棄他了。所以為了縮短執行時間,多線程誕生了。

經典案例

  • 案例一 利用多線程Callable和Future實現併發增加商品
java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

這個案例,可以進一步優化,思路如下

/** 性能優化分析:當itemInfoList大於200條時可以平均拆分多了list然後,批量save

* 一條條save,當1萬時會吃完mysql連接數,那是非常危險啊

這裡batchNum可以根據你自己算法計數 */

  • 案例二 利用多線程Callable和Future實現併發查詢門店
java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

案例三 利用多線程Callable和Future實現併發發消息

java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

注意

  1. get方法是阻塞的,即:線程無返回結果,get方法會一直等待
  2. 用spring自帶線程池,避免頻繁創建和銷燬線程,達到線程對象的重用,spring線程池還可以根據生產情況靈活地控制併發的數目
  3. 還有個坑提醒下,多線程操作可能導致吃光你的數據庫連接數,請根據實際情況配置你的線程池參數。
  4. 異常需要處理下,可以把異常信息封裝到result對象中。

下集預告

多線程非常高效,但出了問題也是非常頭疼。下集繼續分析多線程的那些坑,想駕馭好多線程,還是要多學習才行啊,有空時來刷下我的文章,技術交流下。

如果覺得對你有幫助請關注,有錯誤請指點,下篇繼續分析【實戰多線程開發注意】

java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」

java多線程:分佈式高併發最佳應用舉例「漲工資面試必備」


分享到:


相關文章: