1. 程式人生 > >多執行緒和併發(三)使用join方法讓執行緒按順序執行

多執行緒和併發(三)使用join方法讓執行緒按順序執行

一.執行緒的join方法作用

join方法把指定的執行緒新增到當前執行緒中,可以不給引數直接thread.join(),也可以給一個時間引數,單位為毫秒thread.join(500)。事實上join方法是通過wait方法來實現的。比如執行緒A中加入了執行緒B.join方法,則執行緒A預設執行wait方法,釋放資源進入等待狀態,此時執行緒B獲得資源,執行結束後釋放資源,執行緒A重新獲取自CPU,繼續執行。由此實現執行緒的順序執行。

二,梭哈一段簡單的程式碼

建立三個執行緒,呼叫列印ABC的方法,線上程A中加入B.join,線上程B中加入C.join

然後編寫測試類以及列印ABC的方法

 

啟動執行緒A,由於各執行緒呼叫join方法在列印之前 ,也就是這兩行程式碼,所以順序應該是ABC,看一下列印結果

new Thread(new ThreadB()).start();
        ThreadMain.printA();

 

結果跟預期一致,如果將那兩行程式碼交換順序,則結果應為CBA,不再演示 

另外join的另外一種演變方法也可以達到同樣的效果,程式碼如下