[英]Why main thread waits for another thread to finish before proceed?
我在一個復雜的Java應用程序中遇到的問題可歸結為以下幾點:主線程在子線程未完成之前不會繼續,盡管我認為應該這樣做。 示例問題的代碼如下所示:
public class ThreadTest {
static class MyThread extends Thread{
public void run(){
for(double i = 0; i<1; i+=0.01){
System.out.println(Math.pow(Math.PI,Math.E)*100.0*i-234.0);
}
}
}
public static void main(String[] args){
(new MyThread()).run();
System.out.println("main thread");
}
}
當我運行這個程序時,我總是首先從MyThread獲取輸出(獨立於循環中有多少步驟),然后我從主線程獲取消息。 創建線程的想法是異步執行代碼,但在這里我觀察到一個明確同步的行為。 我錯過了什么?
提前致謝!
當你調用run()時,你正在調用當前線程中的run()方法! 就像為另一個對象調用任何其他方法一樣。
如果你想要一個新線程來調用run(),你需要在線程上調用start()。
嘗試
new MyThread().start();
一種向自己證明這一點的方法是在調試器中逐步執行程序,這將顯示只有一個線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.