试图围绕此代码包裹我的头。当我运行这个 - 输出将是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