子线程阻止java中的父线程

时间:2014-01-29 21:45:21

标签: java multithreading

   public static void main(String[] args) throws Exception {
    new Thread(new Runnable() {
        public void run() {
            while(true) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Hello");
            }
        }
    }).run();
    System.out.println("Bye");
}

在主要的thead中,我创建了一个新的线程,它将每秒打印“hello”。为什么最后的“再见”从未打印过?换句话说,为什么子线程阻塞主线程?

1 个答案:

答案 0 :(得分:6)

因为您拨打的是run(),而不是start()

您绝不能直接致电run()。如果您致电start(),程序将在另一个主题中为您致电run()。 (就像你想要的那样。)通过自己调用run(),你将使用父线程进入run()方法,并使用你的父线程卡在一个永恒的循环中。