看的东西太多也容易忘啊

前段时间面试的时候问到的一个问题,实现一个线程安全的计数器,我已经让类变成Singleton了,set方法也变成同步的了,这个时候面试的人问,如果这个程序是工作在多CPU的机器上,发现这个计数器仍然存在计数不准确的情况会是因为什么?我的回答是:JDK的bug,呵呵,面试的人说不是,JDK提供了修正的机制,就是把计数的那个变量标记为volatile,这样就可以防止,今天有空搜索了下这个关键字,发现我以前翻译的一个文章《破除java神话之三:原子操作都是线程安全的》说的就是这个问题,虽然不是完全匹配,但是机制就是这样的,多处理器有各自的寄存器,所以可能有问题,使用volatile关键字就可以让JVM在读写那个变量的时候都从主存读写,而不在本地保存副本。



作者: Cherami
原载: 看的东西太多也容易忘啊
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

日志评价

1 Star2 Stars3 Stars4 Stars5 Stars (暂无评价) --点击星星直接投票
Loading ... Loading ...


相关日志

  • 暂时没有相关日志。


随机日志



添加到网摘

[del.icio.us]  [新浪 VIVI]  [365key]  [YouNote]  [博采中心]  [Poco]  [SOHU狐摘]  [天极网摘]  [和讯网摘]
喜欢这个插件?

当前日志信息