您的位置:首页 > 其它

等保制度与ISO27001的区别与联系

2015-07-10 11:07 162 查看
有如下代码:

public class NoVisibility {

private static boolean ready;

private static int num;

private static class ReaderThread extends Thread {
public void run() {
while (!ready) {
Thread.yield();
}
System.out.println(num);
}
}

/**
* @param args
*/
public static void main(String[] args) {
new ReaderThread().start();
num = 24;
ready = true;
}

}

最后的结果可能是:NoVisibility可能会一直保持循环, 因为对于读线程来说, ready的值可能永远不可见. 甚至更奇怪的现象是, NoVisibility可能会打印0, 因为经过优化,可能机器底层会先执行ready=true

上面第二个结果好理解, 第一个我就不明白.为什么ready值可能永远不可见导致程序会一直保持循环?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: