1. 程式人生 > 其它 >Java CAS && 執行緒池簡述

Java CAS && 執行緒池簡述

Java CAS

synchronized為悲觀鎖,CAS樂觀鎖機制
包含三個運算元---記憶體位置V、預期原值A、和新值B,V和A相等的時候,才會更換成B。

缺點

1、迴圈時間長,則開銷大
2、只能保證一個共享變數原子操作
3、ABA問題,改回去改回來,解決:juc提供了AtomicStampedReference,控制變數值的版本保證CAS的正確性。

Java執行緒池

降低資源消耗
Java juc提供了五種執行緒池實現

Fork/Join框架

Work-Stealing演算法:某個執行緒從其他佇列中竊取任務執行。

juc的三個executor介面

Executor:執行新任務簡單介面,沒法處理任務的返回值
ExecutorService:提供了執行緒池的管理方法,能夠處理任務的返回值通過Future
ScheduledExecutorService:支援定期執行任務和Future

執行緒池生命週期

執行緒池狀態&&執行緒池有效執行緒數量,int32位的前3位和後29位分別記錄。

大小的選擇

CPU密集型:執行緒數設定為核數+1
I/O密集型:執行緒數=核數*(1 + 平均等待/平均工作),處理較多的任務

執行緒池這東西還是多讀JDK原始碼。