您的位置:首页 > 编程语言 > Java开发

java 重现CPU乱序执行问题

2016-01-26 19:59 381 查看
下面的代码,将 setted 变量的 volatile 修饰符去掉则会导致线程 w 死循环在 while(!setted);这一句上。这是由于 w 线程取 setted 值被优化为直接从本 CPU 的 cache-line 中取的缘故。只需要将 setted 变量定义为 volatile 的,对于这个变量的访问便具有 acquire(读) 和 release (写) 语义,于是便观察不到这个现象了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: