pde*_*eva 0 java concurrency synchronization volatile
我在某处读到x86处理器具有高速缓存一致性,并且可以在每次写入时同步多个内核的字段值.
这是否意味着如果我们计划仅在x86处理器上运行,我们可以在不使用java中的'volatile'keywoard的情况下进行编码?
更新:
好吧,假设我们忽略了指令重新排序的问题,我们是否可以假设在x86处理器上不存在对核心不可见的非易失性字段的分配问题?
关于您的更新:不,我们不能.其他线程可以在不更新变量的情况下读取陈旧值.另一个问题是:只要能够保证单线程行为是正确的,JVM就可以优化代码.
这意味着:
public boolean var = true;
private void test() {
while (var) {
// do something without changing var
}
}
Run Code Online (Sandbox Code Playgroud)
可以通过JIT优化,而(如果想要的话)!