Java多執行緒 join() run()
阿新 • • 發佈:2018-12-21
join():
相當於立刻開一個執行緒執行,並且沒結束前呼叫他的程序(主執行緒)是不能繼續跑的,必須等該執行緒執行完。 並且,如果執行緒沒有start直接用join,不執行的。
public static void main(String[] args) throws Exception{ //這裡的join方法表示main程序暫停執行, // 先去將這個Producer的執行緒執行完畢後, // 才能回來繼續跑main程序 Thread t1 = new Thread( new Producer()); t1.start(); t1.join(); }
run():
和直接start不同,start是將執行緒提交到就緒佇列,等待並行執行。run是直接序列執行,類似直接執行一段方法,非並行。
public static void main(String[] args) throws Exception{
//這裡執行完Consumer後,才執行Consumer2,是序列執行
new Thread( new Consumer()).run();
new Thread( new Consumer2()).run();
}
自己的理解:
其實join和run雖然原理有點不同,但效果異曲同工,都是類似序列執行。