Synchronized的用法

Synchronized的大概有4中用法java

1.修飾一個方法,如:this

public synchronized void count(){

}

在這種狀況下,一個對象一次只能有一個線程能夠訪問該方法。若是是類的不一樣實現對象,訪問同一接口不會受到影響。若是該類中有多個方法都添加了synchronized方法,則一個對象調用其中一個synchronized方法時,該對象的其餘線程不容許調用其餘synchronized方法線程

2.修飾一個代碼塊,如code

public void count(){
    synchronized(this){

    }
}

在這種狀況下,同一個對象,一次只能有一個線程訪問代碼塊中的代碼對象

3.修飾一個靜態方法,如接口

public synchronized static void count(int time){
        
}

因爲靜態方法是屬於類的,因此該類的全部實現對象,一次只能有一個線程使用該方法class

4.修飾一個類,如方法

public class ThreadSync{

public void count(int time){
        synchronized (ThreadSync.class){
        }
}
}

在這種狀況下,該類的全部實現對象,一次只能有一個線程訪問代碼塊中的代碼im

相關文章
相關標籤/搜索