線程同步 提供了兩種策略java
Synchronized Methodsc++
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
關鍵字有兩個做用線程
當一個 synchronized 方法調用並正在執行時,其餘線程調用的 synchronized 方法將會阻塞,直到第一個線程下的 synchronized 方法執行結束code
當一個 synchronized 方法執行結束後,會爲以後的全部阻塞的 synchronized 方法自動創建 happens-before
關係(什麼是 happens-before 關係?)。這保證了該對象的全部狀態的改變,對於全部線程是可見的對象
BTW:爲構造函數添加 synchronized
是語法錯誤。由於沒有意義。rem