在閱讀了關於join方法之後,我有一些疑問:我認爲多線程是一種在我們的程序中引入並行性的方法,並且相信有時候我們需要某個線程在另一個之前完成。但我不明白爲什麼一個程序員寫是這樣的:爲什麼我們創建新線程並使用join()使父線程等待?
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "t1");
Thread t2 = new Thread(new MyRunnable(), "t2");
t1.start();
t1.join();
t2.start();
t2.join();
}
什麼在這個例子中使用線程VS下面的代碼的好處是:在第一個例子
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "t1");
Thread t2 = new Thread(new MyRunnable(), "t2");
t1.run();//just run the task of thread without start new thread
t2.run();
}
主線程應該暫停,直到T1完成,然後開始t2並等待完成,並在第二個例子中它也發生了。
爲什麼我們創建新線程並使用join()使父線程等待?爲什麼不能使用父線程而不是新線程?
調用*** TX的使用CountDownLatch。運行()***沒有啓動任何線程,這是不同的! –
在第二種情況下,您的主要方法可能會在線程t1和t2之前完成。這是不同之處。在第一種情況下,Main方法永遠不會在線程t1和t2之前完成。 –
我知道,我的問題是爲什麼創建線程,當我們需要停止當前線程,直到它完成?爲什麼簡單地不使用當前線程而不是新線程? – MTB