執行緒拓展(join用法)
阿新 • • 發佈:2021-01-31
技術標籤:java高階
我們一起來看一張圖:
如何讓出當前執行緒的執行權
yield()方法,只在JDK某些內部實現才能看到,是讓出執行權,基本用不到。讓出之後變成可執行狀態。
join方法
t.join()方法只會使主執行緒(或者說呼叫t.join()的執行緒)進入等待池並等待t執行緒執行完畢後才會被喚醒。並不影響同一時刻處在執行狀態的其他執行緒。
分析:
package CSDN; public class TestJoin { public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub ThreadTest t1=new ThreadTest("A"); ThreadTest t2=new ThreadTest("B"); t1.start(); t2.start(); } } class ThreadTest extends Thread { private String name; public ThreadTest(String name){ this.name=name; } public void run(){ for(int i=1;i<=5;i++){ System.out.println(name+"-"+i); } } }
列印結果:
A-1
B-1
B-2
B-3
A-2
B-4
A-3
B-5
A-4
A-5
可以看到兩個執行緒是交替執行的。
當我們加入了join後:
package CSDN; public class TestJoin { public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub ThreadTest t1=new ThreadTest("A"); ThreadTest t2=new ThreadTest("B"); t1.start(); t1.join(); t2.start(); } }
列印結果:
A-1
A-2
A-3
A-4
A-5
B-1
B-2
B-3
B-4
B-5