[英]java thread visibility
當我讀到“ 實踐中的java並發 ”c03時,我對以下程序感到困惑:
public class NoVisibility {
private static boolean ready;
private static int number;
private static class ReaderThread extends Thread {
public void run() {
while (!ready)
Thread.yield();
System.out.println(number);
}
}
public static void main(String[] args) {
new ReaderThread().start();
number = 42;
ready = true;
}
}
由於重新排序和線程可見性,循環可能永遠不會停止,或輸出可能為零,但我已嘗試多次,輸出始終為42.所有原因是我太幸運了?
所有的原因是我太幸運了?
不必要。 它還取決於您的處理器架構和JVM實現。 這是微妙的記憶模型問題的一個問題:它們很難在野外重現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.