1. 程式人生 > 其它 >執行緒拓展(join用法)

執行緒拓展(join用法)

技術標籤: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);
		}		
	}
}

列印結果:

  1. A-1

  2. B-1

  3. B-2

  4. B-3

  5. A-2

  6. B-4

  7. A-3

  8. B-5

  9. A-4

  10. 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