关于volatile变量

当一个域声明为volatile类型后,编译器与运行时会监视这个变量:它是共享的,而且对它的操作不会与其他的内存操作一起被重排序。

volatile变量不会缓存在寄存器或者缓存在对其他处理器隐藏的地方。所以读一个volatile类型的变量时,总会返回由某一线程写入的最新值。

但是只有在满足了以下的标准后,才能使用volatile变量:

1、写入变量时并不依赖变量的当前值;或者能够确保只有单一的线程修改变量的值。

2、变量不需要与其他的状态变量共同参与不变约束

3、访问变量时,没有其他的原因需要加锁

posted @ 2011-09-08 18:34  k3huihui  阅读(208)  评论(0)    收藏  举报