/**
*
* 开销较低的读写锁
* @author mapeijie
*
*/
public class Volatile {
/*********************************************************************************
* 关于volatile的使用
* java同步分两种方式1:同步块-函数,2:voaltile
*
* 通常情况下锁具备两个特征1:mutula exclusion 互斥,2:visibility可见性
* 1:一个变量值的修改同事只能有一个线程来做,
* 2:第一个线程修改之后的变量值对之后的线程可见
*
* synchronized 支持两个特性。
* volatile 仅支持第二个特性。
*
* 基于此特点,volatile不会造成线程阻塞
*
* 易用场景:
* 读操作远大于写操作
* 变量写操作不依赖当前值
* 变量不包含在其他变量的不变式中
*
* 不易用场景:计数器
*
* 二者完美结合可以实现一个简单的考小较低的读写锁。
*
*********************************************************************************/
private volatile int value;
public int getValue() {
return value;
}
public synchronized void setValue(int value) {
this.value = value;
}
}