我對java中的線程執行順序有所懷疑。 這個例子Java中的線程執行順序
public class Thr implements Runnable {
String string = "Yes ";
public void run(){
this.string = "No ";
}
public static void main (String args[]){
Thr t = new Thr();
new Thread(t).start();
for(int i = 0; i < 10; i++)
System.out.println(t.string);
}
}
給輸出:
Yes
No
No
No
No
No
No
No
No
No
我有紅色的這個話題 Java. The order of threads execution ,我很困惑,爲什麼字符串後,首先通過for循環更改爲無。 我因子評分,作爲主線程沒有大的工作要做,主線程將首先執行,並且輸出將是
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
當我把一些打印在run方法,而不是this.string =「無「然後,從運行方法打印最後打印。
是的,但我認爲,作爲主線程沒有太多的工作,爲循環冷杉將被執行與是,然後新線程(t).start(); ,所以它會是,並在最後,沒有 – MGKP
但是,當我把,例如,在運行System.out.println(「線程」),並在主循環System.out.println(「主」 ),程序在末尾打印出線程線程 – MGKP
線程相互獨立運行。沒有定義的順序,它可能很好地發生你的預期。但是,如果你依靠這個,那就是純粹的運氣。 – zapl