public class Test extends Thread{
public void hello(String s){
System.out.println(s);
}
public void run(){
hello("I’mrunning...");
}//endofrun()
public static void main(String [] args){
Test t=new Test();
System.out.println("always first");
t.start();
System.out.println("always second but why?");
}
}
我已經運行了這段代碼30次。在java中的bug線程處理
爲什麼「總是第二,但爲什麼?」總是在控制檯上第二?當調用t.start()時,我們有2個線程。 (2堆):主線和第二線。所以「我正在運行」必須有時是控制檯上的第二個輸出。當我刪除「總是第一」輸出語句比兩個輸出左,行爲非確定性(這是它應該是這樣)
所以我的想法是錯誤的,爲什麼是System.out.println(「永遠第一「);影響併發性?
當然,確定性行爲會使測試更加困難...... – 2009-10-31 16:44:22