線程同步之 Synchronized Methods

Synchronized Methods

線程同步 提供了兩種策略java

  1. Synchronized Methodsc++

  2. Synchronized Statementssegmentfault

本文介紹 Synchronized Methodsapp

一個例子

使用 synchronized 關鍵字,使一個方法爲 synchronized函數

public class SynchronizedCounter {
    private int c = 0;

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

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

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

添加 synchronized 關鍵字有兩個做用線程

  1. 當一個 synchronized 方法調用並正在執行時,其餘線程調用的 synchronized 方法將會阻塞,直到第一個線程下的 synchronized 方法執行結束code

  2. 當一個 synchronized 方法執行結束後,會爲以後的全部阻塞的 synchronized 方法自動創建 happens-before 關係(什麼是 happens-before 關係?)。這保證了該對象的全部狀態的改變,對於全部線程是可見的對象

BTW:爲構造函數添加 synchronized 是語法錯誤。由於沒有意義。rem

相關文章
相關標籤/搜索