我正在閱讀Java線程編程一本書由Paul Hyde。我進入了初級篇。我在Eclipse IDE中運行各種示例程序。Java線程編程示例 - 程序表現異常
public class TwoThreadAlive extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
printMsg();
}
}
public void printMsg() {
// get a reference to the thread running this
Thread t = Thread.currentThread();
String name = t.getName();
System.out.println("name=" + name);
}
public static void main(String[] args) {
TwoThreadAlive tt = new TwoThreadAlive();
tt.setName("my worker thread");
System.out.println("before start(), tt.isAlive()=" + tt.isAlive());
tt.start();
System.out.println("just after start(),tt.isAlive()=" + tt.isAlive());
for (int i = 0; i < 10; i++) {
tt.printMsg();
}
System.out
.println("at the end of main(), tt.isAlive()=" + tt.isAlive());
}}
這個節目是給我每次運行它。但是它已經提到,輸出會有所不同的JVM會更加忙碌環境下,你switching.Can請告訴我,爲什麼它被賦予相同的輸出時間SAME輸出?
而且它給
at the end of main(), tt.isAlive()=true
這本來
at the end of main(), tt.isAlive()=false
請幫助我,這讓我瘋了。
您可以打印您正在獲取的輸出... –
嘗試增加for-loops中的迭代次數。也許工作量太少,沒有執行上下文切換。 – joergl
將主方法內的循環增加到更高的值。你應該可以模擬它。當前程序輸出的方式在其他機器上不需要相同,調度線程留給操作系統和運行程序時的其他參數。 – panzerschreck