线程同步 提供了两种策略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