類型 | 原始構成 | 使用方法 | 等待是否可中斷 | 加鎖是否公平 | 鎖綁定多個條件Conditionapi |
synchronized | 關鍵字,JVM層面(moitorenter\monitorexit) | 代碼執行完後自動釋放鎖 | 不可中斷 | 非公平鎖 | 無 |
ReentrantLock | 具體類,api層面的鎖 | 須要用戶手動釋放鎖,用Lock()和unlock()配合try/finally語句塊來完成 | 可中斷 | 二者均可,默認false即非公平鎖 | 實現分組喚醒的線程們,能夠精確喚醒,而不是像synchronized要麼隨機喚醒,要麼所有喚醒 |