synchronized 關鍵字分析

2021-09-05 10:21:56 字數 1241 閱讀 4026

synchronized是典型的可衝入鎖,jdk1.5之後做了較大的優化

如圖,synchronized可以用在方法上也可以使用在**塊中,其中方法是例項方法和靜態方法分別鎖的是該類的例項物件和該類的物件。而使用在**塊中也可以分為三種,具體的可以看上面的**。這裡的需要注意的是:如果鎖的是類物件的話,儘管new多個例項物件,但他們仍然是屬於同乙個類依然會被鎖住,即執行緒之間保證同步關係。如果鎖的是例項物件,則不同的執行緒會獲取到不同的鎖。

如果乙個類被spring管理,且為單例的(預設單例);即使synchronized鎖的是非靜態方法,獲取的是物件鎖,但由於jvm中只存在乙個物件,故作用和鎖類物件類似,只允許乙個執行緒進如該類;測試**如下

@component

public class synchronizeddemo

system.out.println(thread.currentthread().getname() + "出去方法1");

}public synchronized void test2()

}

@runwith(springrunner.class)

@springboottest

public class aitest catch (interruptedexception | brokenbarrierexception e)

system.out.println(thread.currentthread().getname()+"->準備好了");

1synchronizeddemo sd=new synchronizeddemo();

sd.test1();

}}).start();

new thread(new runnable() catch (interruptedexception | brokenbarrierexception e)

system.out.println(thread.currentthread().getname()+"->準備好了");

1synchronizeddemo sd=new synchronizeddemo();

sd.test2();

}}).start();}}

synchronized關鍵字解析

一 修飾方法 1.修飾普通方法 對呼叫此方法的物件加鎖 2.修飾static方法 對呼叫此方法的類的所有物件加鎖 3.不能修飾構造方法,但是可以在構造方法內部修飾 塊 二 修飾 塊 1.synchronized this 相當於修飾普通方法 2.synchronized a.class 相當於修飾s...

解讀synchronized關鍵字

size large 最近在寫多執行緒程式,網上收集總結了synchronized的用法,結果如下 size 1 synchronized關鍵字的作用域有二種 1 是某個物件例項內,synchronized amethod 可以防止多個執行緒同時訪問這個物件的synchronized方法 如果乙個物...

synchronized 關鍵字原理

眾所周知synchronized關鍵字是解決併發問題常用解決方案,有以下三種使用方式 實現原理 jvm是通過進入 退出物件監視器 monitor 來實現對方法 同步塊的同步的。具體實現是在編譯之後在同步方法呼叫前加入乙個monitor.enter指令,在退出方法和異常處插入monitor.exit的...