public class Test17 { public static void main(String[] args) {
new Thread() {
public void run() {
System.out.println("new Thread begin");
try {
this.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" dead");
};
}.start();

System.out.println(Thread.currentThread().getName()+" dead");
}
}
程序运行挂住了?输出结果如下:
new Thread begin
main dead打算让new Thread等main Thread执行完再执行,为什么会“挂住”了?

解决方案 »

  1.   

    运行到this.join等待自己结束。 那不就卡在那?
      

  2.   

    JOIN名为等待线程结束,实际效果就是阻塞。
      

  3.   

    这样就行了public class Test17 extends Thread
    {
    static Test17 t = new Test17(); public static void main(String[] args)
    {
    System.out.println(Thread.currentThread().getName() + " dead");
    t.start();
    try
    {
    t.join();
    }
    catch (InterruptedException e)
    {
    e.printStackTrace();
    }
    } public void run()
    { System.out.println("new Thread begin"); System.out.println("哈哈 dead");
    }}