JDK併發相關併發包
阿新 • • 發佈:2018-12-13
synchronized的功能擴充套件:
重入鎖;ReentrantLock;
其實也就是lock對於synchronized的替代了,要注意的一個點就是你可以鎖多個,但是你鎖了幾個,最後就要解鎖幾個這個問題;
使用lock.lock()加鎖,使用lock.unlock()解鎖;
提供中斷處理;
使用中斷鎖,執行緒可以被中斷,也就是說,當一個執行緒正在等待鎖的時候,他依然可以收到一個通知,被告知無須等待,可以停止工作了,使用的是lock.lockInterruptibly();方法;
鎖申請等待限時;
給鎖給定一個時間,如果超過了這個時間的話,就讓執行緒自動放棄;使用的是lock.trylock(時間段,時間單位);另外還有一個就是lock.trylock();如果是帶引數的,就是最多等待這麼多時間,超過了時間就返回false,成功獲得了鎖,就返回true;如果是不帶引數直接執行,就是比較直接的,如果鎖未被佔用,則申請鎖成功,返回true,否則就是失敗了,直接返回false;
公平鎖;
公平鎖的一個特點就是:它不會產生飢餓現象;所有的鎖都是先到先等,不得插隊;但是維持公平需要一個有序佇列,實現成本較高,效能相對也非常低下,預設情況下,鎖是非公平的;