Synchronized Methods
线程同步 提供了两种策略
Synchronized Methods
Synchronized Statements
本文介绍 Synchronized Methods
一个例子
使用 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 方法执行结束
当一个 synchronized 方法执行结束后,会为之后的所有阻塞的 synchronized 方法自动建立
happens-before
关系(什么是 happens-before 关系?)。这保证了该对象的所有状态的改变,对于所有线程是可见的
BTW:为构造函数添加 synchronized
是语法错误。因为没有意义。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。