同步 synchronized

2018-07-03 15:30 更新

舉個(gè)例子

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 是這個(gè)類的實(shí)例化將有兩個(gè)效果:

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)