試圖圍繞此代碼包裹我的頭。當我運行這個 - 輸出將是Roger。是不是味精是一個靜態變量,並在課堂上因此應該打印摩爾?線程和靜態變量
編輯:我已經允許睡眠也允許子線程運行其過程。它還打印打印..。仍然沒有變化
public class Test2 {
private static String msg = "Roger";
static {
new Thread(new Runnable() {
public void run() {
System.out.println("printing..");
msg += "Moore";
}
}).start();
}
static {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
public static void main(String argv[]) {
System.out.println(msg);
}
}
它看起來像一個簡單的競爭條件。我想知道,在main()中,如果你睡一秒鐘,它會輸出「Moore」而不是「Roger」嗎? – CmdrMoozy
是的 - 就是這樣..加入一個Thread.sleep更長的時間沒有打印相關的輸出!感謝你的回答!請添加你的答案,以便我可以「回答」它..或者我可以回答papmplhet - 兩個都是正確的... – user2796381