Inq*_*ive 12 java java-memory-model
我从Effective Java中读到,在没有同步的情况下,下面的序列A可以被虚拟机转换为序列B并调用它hoisting
.我还在某处读到,如果变量未被声明为涉及变量的易失性指令,则可以重新排序.吊装和重新订购同样的东西?
while (!done) sequence A
i++;
if (!done)
while (true) sequence B
i++;
Run Code Online (Sandbox Code Playgroud)
mik*_*era 16
它们略有不同.
提升意味着您已将某些操作从循环中拉出,因为循环本身不会影响操作的结果.在您的情况下,您正在从while循环中提升条件测试.
重新排序意味着以不影响结果的方式更改指令序列.通常,这将是相邻的指令,没有数据依赖性,例如,执行以下两个语句的顺序无关紧要:
int a = x;
int b = y;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3765 次 |
最近记录: |