簡體   English   中英

為什么主線程在繼續之前等待另一個線程完成?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM