Synchronized的個人學習總結

2021-08-05 21:51:47 字數 975 閱讀 6678

先附上學習資料**,感謝樂於分享的同道中人:

這一篇講的是synchronized原理。

這一篇和上面一篇差不多,但是內容少,淺顯一些。深入學習的話,還是要看上面一篇的。

這一篇把synchronized(this),synchronized(.class),synchronized+方法,synchronized+靜態方法,到底鎖什麼進行了講解。

如果大家急於求成,想馬上知道synchronized是幹嘛的,那就來對了,請看我的總結:

首先大家要有個概念,monitor。(每個object都有乙個監視器鎖(monitor)。當monitor被占用時就會處於鎖定狀態,synchronized就是用來給monitor上鎖的,當synchronized的**塊執行完就會釋放這個monitor的鎖。)

大家在**中會看到好幾種形式的synchronized,想必也是眼花繚亂不知道每個的具體作用。下面由我來科普:

synchronized(this)獲得的是呼叫該含synchronized方法的引用物件,可能很拗口,上段**,就是t1,t2的鎖(具體**不上了,類名取的通俗易懂)

runnabletest t1= new runnabletest();

runnabletest t2= new runnabletest();

t1.start();

t2.start();

synchronized(myclass.class)監控的是類本身的,獲取類本身的監控器(monitor)。

synchronized修飾方法獲取的是和synchronized(this)相同。

synchronized修飾static方法,監控的是該類本身的監視器。與synchronized(myclass.class)相同。

所以給小白們剷除乙個誤區,synchronized並不是鎖住**裡面的東西,他們鎖的只是監控器本身。執行緒獲取監控器則runnable,獲取不了則blocked。

synchronized的使用總結

synchronized的基本使用規則可總結為以下3條。1.當乙個執行緒訪問 某物件 的 synchronized方法 或者 synchronized 塊 時,其他執行緒對 該物件 的該 synchronized方法 或者 synchronized 塊 的訪問將被阻塞。2.當乙個執行緒訪問 某物件 ...

synchronized的作用(三)

b 鎖定乙個物件或方法,它是靜態的 這樣鎖定,它鎖定的是物件所屬的類 public synchronized static void execute 等同於public class testthread 測試 目標類 public class testthread public static voi...

執行緒 synchronized的使用

synchronized public class sync override public void run public void pf int i catch interruptedexception e system.err.println i new date gettime public...