簡體   English   中英

java線程可見性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM