顧名思義是用於同步互斥的做用的。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
線程