私は複雑なJavaアプリケーションで直面している問題は、次のように述べています。メインスレッドは、サブスレッドが終了しないうちに処理が進まないということです。私はこのプログラムを実行すると、私はいつも(サイクルでは、独立して、どのように多くの手順)最初MyThreadからの出力を得るメインスレッドは、続行する前に別のスレッドが終了するのを待つ理由は何ですか?
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");
}
}
、その後、私はからのメッセージを取得する:問題を例示したコードは以下のとおりですメインスレッド。スレッドを作成するという考え方は、非同期的にコードを実行することですが、ここでは明確に同期動作を観察します。何が欠けていますか?
ありがとうございます!
あなたが好きな答えを見つけたら、それを受け入れるのは丁寧です。場合によっては、より良い回答が出てくるのを待つ価値がありますが、それはあなた次第です。 –
もちろん、ありがとう!私はスタートと混同して実際に走った。 – Tim
run()がまったく公開されていないのは混乱しています。実際には、スレッドはrunメソッドを持つべきではなく、Runnableを使用する必要があります。これは、IMHOのベストプラクティスです。 –