Java基礎-synchronized關鍵字的用法

顧名思義是用於同步互斥的做用的。java

這裏精簡的記一下它的使用方法以及意義:this

1. 當synchronized修飾 this或者非靜態方法或者是一個實例的時候,所同步的鎖是加在this或者實例對象引用上面的。好比a,b同爲Main類的實例化對象,a調用被同步的方法,和b調用被同步的方法,沒有造成互斥。可是不一樣線程的a對象調用被同步的方法就被互斥了。spa

public synchronized void method(){  
//….  
}  
public void method()  
{  
synchronized (this)  
{  
//…..  
}  
}


2.與1不一樣,當synchronized修飾類名.class 或者靜態方法的時候. 就算是不一樣對象,也會造成互斥.net

Class Main  
{  
public synchronized static void method1()   
{  
//….  
}  
public void method2()  
{  
synchronized(Main.class) //   
}  
}

轉自http://blog.csdn.net/cq361106306/article/details/38736551
線程

相關文章
相關標籤/搜索