同步 synchronized

2018-07-03 15:30 更新

舉個例子

public class Synchronized Counter {
    private int c = 0;


    public synchronized void increment() {
        c++;
    }


    public synchronized void decrement() {
        c--;
    }


    public synchronized int value() {
        return c;
    }
}

如果 count 是這個類的實例化將有兩個效果:

  • 不可能同時調(diào)用同一個對象的同一個方法, 防止造成沖突.同一時間只有一個線程可以調(diào)用這對象的同步方法.比如在一個賬戶里同時存錢和轉(zhuǎn)賬.

  • 當(dāng)一個同步方法退出時, *它會和隨后一個同步方法的調(diào)用自動建立happens-before關(guān)系. 這保證了所有線程都知道對象的狀態(tài)改變了.
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號