1. 程式人生 > >Java多執行緒 join() run()

Java多執行緒 join() run()

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雖然原理有點不同,但效果異曲同工,都是類似序列執行。