Java CAS && 執行緒池簡述
阿新 • • 發佈:2022-03-10
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原始碼。