2017-03-29 6 views
0

私は2つのスレッドt1とt2を持っていると言うと、Oracleのドキュメントに従って、t1.joinは現在のスレッドがt1を終了するのを待つことを意味します。私の質問は、スレッドが既に終了している場合です。例:2つのスレッドがJavaで結合されるとどうなりますか?

Thread t1 = new Thread(new EventThread("e1")); 
t1.start(); 
Thread e2 = new Thread(new EventThread("e2")); 
t2.start(); 
while (true) 
{ 
    try { 
    t1.join(); 
    t2.join(); 
    break; 
    } 
} 

t2がすでに終了している場合はどうなりますか?

+2

どのようなオプションがありますか?あなたは何らかのテストをしましたか? [documentation](https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#join(long))を読んだことがありますか? – shmosel

答えて

0

join()のドキュメントから:

このメソッドの呼び出しは、呼び出し

join(0) 

そしてjoin(long millis)のドキュメント言うとまったく同じように動作します

この実装では、のループを使用しますは、this.isAliveに条件付けられたを呼び出します。

isAliveリターンがfalse(すなわち、スレッドが終了した)のであれば、waitはちょうどすぐに戻りますjoinと呼ばれ、決してされます。

関連する問題