synchronized關鍵字顧名思義,是用於同步互斥的作用的。
這裡精簡的記一下它的使用方法以及意義:
1. 當synchronized修飾 this或者非靜態方法或者是一個實例的時候,所同步的鎖是加在this或者實例對象引用上面的。例如a,b同為Main類別的實例化對象,a呼叫被同步的方法,和b呼叫被同步的方法,沒有形成互斥。但是不同執行緒的a物件呼叫被同步的方法就被互斥了。
public synchronized void method(){ //…. } public void method() { synchronized (this){ //….. } }
2.與1不同,當synchronized修飾類別名稱.class 或靜態方法的時候. 就算是不同對象,也會形成互斥
Class Main { public synchronized static void method1(){ //…. } public void method2(){ synchronized(Main.class) // } }
更多舉例講解Java中synchronized關鍵字的用法相關文章請關注PHP中文網!