ここから私が何を読むからThread join on itself;この方法は、それ自体に呼び出された参加ダンプを通過すると、私はこの質問を得たとき、私は何を思ったことは、メインであることは永遠にスレッドがそれ自身でjoin()を呼び出すとどうなりますか
を待つべきであるため、それは、私が現在ocajp 8認証取得の準備をしています永遠を待つべき
public class startinginconstructor extends Thread
{
private int x=2;
startinginconstructor()
{
start();
}
public static void main(String[] args) throws Exception
{
new startinginconstructor().makeitso();
}
public void makeitso() throws Exception
{
x=x-1;
System.out.println(Thread.currentThread().getName()+" about to call join ");
join();
System.out.println(Thread.currentThread().getName()+" makeitso completed ");
// above line shouldn't be executed (method shouldn't be completed as well)since it joined on itself..?
}
public void run()
{
System.out.println(Thread.currentThread().getName()+" run started ");
x*=2;
System.out.println(Thread.currentThread().getName()+" run about to complete ");
}
}
プログラムは、私が間違って永遠に待機しているスレッドの意味を手に入れた出力
main about to call join
Thread-0 run started
Thread-0 run about to complete
main makeitso completed
次で終わったか何かがあります私は
ノート行方不明です:私は、コンストラクタからスレッドを開始することはお勧めできません知っている..私はただ実際には*ではない、かなり正確な(それを貼り付けたように、これはダンプで正確な質問ですが、私はへのprintln文を配置していますプログラムの流れを参照してください)
私はそれを理解しています... – viru