我想在下面的程序中输出100作为输出。如何打印100?
我得到0作为答案。
class s extends Thread{
int j=0;
public void run() {
try{Thread.sleep(5000);}
catch(Exception e){}
j=100;
}
public static void main(String args[])
{
s t1=new s();
t1.start();
System.out.println(t1.j);
}
}
也和纠正我,如果我错了大师,而比直接访问“s”类的变量你应该包含访问器方法来打印j的值。 – 2011-01-14 14:48:31
@牛:这将是一个很好的做法。这里更重要的是同步对`j`的访问(或者声明它是volatile)。即使在`s`线程完成写入后,主线程可能(尽管不太可能)看到`j`的陈旧值。请参阅Brian Goetz的“Java实践中的并发性”一书,以便解释为什么这是真实的。 – 2011-01-14 17:17:50