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”。为什么最后的“再见”从未打印过?换句话说,为什么子线程阻塞主线程?
答案 0 :(得分:6)
因为您拨打的是run()
,而不是start()
。
您绝不能直接致电run()
。如果您致电start()
,程序将在另一个主题中为您致电run()
。 (就像你想要的那样。)通过自己调用run()
,你将使用父线程进入run()
方法,并使用你的父线程卡在一个永恒的循环中。