本文列舉了Java多線程相關(guān)的一些重要概念,作為后續(xù)系列文章索引。
Linux鎖機(jī)制對(duì)比
- spinlock: 自旋鎖,CPU自旋等待獲得鎖,運(yùn)行機(jī)制CAS (Compare and Swap)
- mutex: 互斥鎖,線程sleep等待鎖
- semaphore:信號(hào)量,同步機(jī)制,如果信號(hào)量的值為1,則效果與mutex相同。如果信號(hào)量為2則可以同時(shí)讓兩個(gè)線程訪問(wèn)資源
參考:spinlock、semaphore和mutex的區(qū)別
JAVA原子類與CAS
JAVA synchronize關(guān)鍵字與Lock
JAVA信號(hào)量
Java多線程實(shí)現(xiàn)原理
- volatile關(guān)鍵字
- AQS
volatile 關(guān)鍵字
作用:
- 內(nèi)存可見(jiàn)性
- happens-before
AQS
參考: