读书人

java线程同步中volatile关键字的施用场

发布时间: 2012-08-27 21:21:57 作者: rapoo

java线程同步中volatile关键字的使用场景
关键字volatile可以说是java虚拟机提供的最轻量级的同步机制,由于它不太容易被正确地、完整地理解,很少被人用到。但是什么时候适合用volatile呢?一般来说:当一个变量的值的修改不依赖原来的值时,就满足了volatile关键字的使用场景。

例1

private int value = 0;public void setValue(int value){this.value = value;}public int getValue(){return value;}

当set方法和get方法在两个线程中执行时,由于set方法对value的修改不依赖value的原值,可以在value变量前加volatile关键字来实现线程同步,保证get方法取得的值是最新的。

例2 这也是用volatile保证线程同步的列子。
volatile boolean shutdown;public void shutdown(){shutdown = true;}public void dowork(){while(!shutdown){     // do something}}


例3 这是一个不能用volatile关键字的例子
public static int race = 0;public static void increase(){race++;}public static int getRace(){return race;}

读书人网 >编程

热点推荐