本人Java經驗不是很多,在開發的過程中,經常會聽到悲觀鎖樂觀鎖 可重入鎖 遞歸鎖 共享鎖獨佔鎖 偏向鎖 自旋鎖 是不是被各種各樣的鎖概念搞的暈頭轉向
悲觀鎖:
悲觀鎖指的是數據對外界的修改採取保守策略,它認爲線程很容易會把數據修改掉,因此在整個數據被修改的過程中都會採取鎖定狀態,直到一個線程使用完,其他線程纔可以繼續使用。
package learn.cn.多線程;
/**
* create by liuzhiwei on 2020/4/2
*/
public class 悲觀鎖 {
public static void main(String[] args) {
synchronized (悲觀鎖.class){
System.out.println("lock");
}
}
}
synchronized修飾的代碼塊,在執行之前先使用monitorenter指令加鎖,然後在執行結束之後再使用monitorexit指令釋放鎖資源,在整個執行期間此代碼都是鎖定的狀態,這就是典型悲觀鎖的實現流程。
樂觀鎖: