同步 synchronized

2018-07-03 15:30 更新

舉個(gè)例子

  1. public class Synchronized Counter {
  2. private int c = 0;
  3. public synchronized void increment() {
  4. c++;
  5. }
  6. public synchronized void decrement() {
  7. c--;
  8. }
  9. public synchronized int value() {
  10. return c;
  11. }
  12. }

如果 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)