volatile关键字的应用
January 7, 2010 – 11:22 pm要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:
- 对变量的写操作不依赖于当前值。
- 该变量没有包含在具有其他变量的不变式中。
第一条就限制了我们不能用volatile来保证类似x++操作的原子性
第二条限制了我们不能用volatile来保证类似x>y操作的原子性
结论:volatile只能保证可见性,不能保证其原子性
以为是风般不受拘束,现在感觉更像是浮萍
要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:
- 对变量的写操作不依赖于当前值。
- 该变量没有包含在具有其他变量的不变式中。
第一条就限制了我们不能用volatile来保证类似x++操作的原子性
第二条限制了我们不能用volatile来保证类似x>y操作的原子性
结论:volatile只能保证可见性,不能保证其原子性