synchronized的幾種用法

2021-09-01 15:11:51 字數 571 閱讀 9850

1.方法宣告時使用,放在範圍操作符(public等)之後,返回型別宣告(void等)之前.這時,執行緒獲得的是成員鎖,即一次只能有乙個執行緒進入該方法,其他執行緒要想在此時呼叫該方法,只能排隊等候,當前執行緒(就是在synchronized方法內部的執行緒)執行完該方法後,別的執行緒才能進入.

2.對某一**塊使用,synchronized後跟括號,括號裡是變數,這樣,一次只有乙個執行緒進入該**塊.此時,執行緒獲得的是成員鎖

3.synchronized後面括號裡是一物件,此時,執行緒獲得的是物件鎖. 對於3,如果執行緒進入,則得到當前物件鎖,那麼別的執行緒在該類所有物件上的任何操作都不能進行.在物件級使用鎖通常是一種比較粗糙的方法。為什麼要將整個物件都上鎖,而不允許其他執行緒短暫地使用物件中其他同步方法來訪問共享資源?如果乙個物件擁有多個資源,就不需要只為了讓乙個執行緒使用其中一部分資源,就將所有執行緒都鎖在外面。

class meth

synchronized(y)

}public void () }}

4、synchronized後面括號裡是類,此時,執行緒獲得的是物件鎖.這樣的同步塊而言,所有呼叫test多個例項的執行緒賜教只能有乙個執行緒可以執行.

Synchronized 的幾種用法

這個也是我們用得最多的,只要涉及執行緒安全,上來就給方法來個同步鎖。這種方法使用雖然最簡單,但是只能作用在單例上面,如果不是單例,同步方法鎖將失效。用在普通方法 private synchronized void synchronizedmethod catch interruptedexcepti...

Synchronized的幾種用法

我們都知道 synchronized 是執行緒安全同步用的,大部分程式可能只會用到同步方法上面。其實 synchronized 可以用到更多的場合,棧長列舉了以下幾個用法。這個也是我們用得最多的,只要涉及執行緒安全,上來就給方法來個同步鎖。這種方法使用雖然最簡單,但是只能作用在單例上面,如果不是單例...

synchronized的幾種加鎖方式

public class synchronizedtest catch interruptedexception e public static void main string args start new thread start 此處列舉的是不同例項呼叫的情況 此處列舉的是同一例項呼叫的情況 ...