java併發編程實戰閱讀筆記(第二章)線程安全性

什麼是線程安全性
當多個線程訪問某個類時,這個類始終都能表現出正確的行爲,那麼就稱這個類是線程安全的。線程安全性最核心的概念是正確性。

原子變量:多線程中,執行將計數器+1這樣的操作,容易產生競態條件,可以使用原子變量(AtomicLong, AtomicInteger, AtomicReference),代碼樣例:

public class CountingFactorizer implements Servlet {

    private final AtomicLong count = new AtomicLong();

    public long getCount(){
        return count.get();
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("test begin");
        count.incrementAndGet();
        System.out.println("test end");
    }
}

閱讀擴展:原子變量

內置鎖synchronized是支持重入的,當某個線程試圖獲取一個已經由它自己持有的鎖,那麼這個請求就會成功。“重入”意味着獲取鎖操作的粒度是“線程”,而不是調用。
使用synchronized可以保證原子性,但可能引入活躍性問題或性能問題。
閱讀擴展:synchronized

發佈了55 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章