- 使用本地變量
- 使用不可變類
- 最小化鎖的作用域范圍: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)變量