多線程并發(fā)最佳實踐

  • 使用本地變量
  • 使用不可變類
  • 最小化鎖的作用域范圍:S= 1/(1-a+a/n)

其中,a為并行計算部分所占比例,n為并行處理結(jié)點個數(shù)。這樣,當1-a=0時,(即沒有串行,只有并行)最大加速比s=n;當a=0時(即只有串行,沒有并行),最小加速比s=1;當n→∞時,極限加速比s→ 1/(1-a),這也就是加速比的上限。例如,若串行代碼占整個代碼的25%,則并行處理的總體性能不可能超過4。這一公式已被學術(shù)界所接受,并被稱做“阿姆達爾定律”,也稱為“安達爾定理”(Amdahl law)。

  • 使用線程池的Executor ,而不是直接new Thread 執(zhí)行
  • 寧可使用同步也不要使用線程的wait和notify
  • 使用BlockingQueue 實現(xiàn)生產(chǎn)-消費模式
  • 使用并發(fā)集合而不是加了鎖的同步集合
  • 使用Semaphore創(chuàng)建有界的訪問
  • 寧可使用同步代碼塊,也不使用同步方法
  • 避免使用靜態(tài)變量
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容