我想在下面的程序中輸出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