Thread中的join用法和案例

Thread中的join用法和案例

有兩個線程A,聲明爲a,線程B聲明爲b.
如果線程A執行了b.join()方法,其含義是當前線程A等待b線程終止之後才能從b.join()返回.
當主線程在循環中i等於10的時候,調用了p1線程的join()方法,則當p1循環打印完100次,返回到主線程
的循環中,當i等於20調用p2的join方法時,此時p2已經執行了循環打印154次了,則繼續執行155知道打印完畢後,繼續執行主線程。
順便提一下:join(long millis)和join(long millis,int nanos)超時方法表示,如果a,b在規定的時間內沒有執行完畢,也強制返回。

上java代碼:

public class ThreadJoinTest {

	public static void main(String[] args) throws InterruptedException {

		Thread p1 = new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 100; i++) {
					System.out.println("p1執行第"+i+"個!");
				}
				System.out.println("p1完成!");
			}
		});
		Thread p2 = new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 173; i++) {
					System.out.println("p2執行第"+i+"個!");
				}
				System.out.println("p2完成!");
			}
		});
		System.out.println("p1開始。。。");
		p1.start();
		System.out.println("p2開始。。。");
		p2.start();
		System.out.println("main的30次循環開始。。。");
		for (int i = 0; i < 30; i++) {
			System.out.println("main執行第"+i+"個");
			if(i == 10) {
				System.out.println("main執行第10個的時候,p1 join.");
				p1.join();
			}else if(i == 20){
				System.out.println("main執行第20個的時候,p2 join.");
				p2.join();
			}
		}
		System.out.println("主線程執行完畢!");
	}

}

打印結果:

p1開始。。。
p2開始。。。
main的30次循環開始。。。
main執行第0個
main執行第1個
main執行第2個
main執行第3個
main執行第4個
main執行第5個
main執行第6個
main執行第7個
main執行第8個
main執行第9個
main執行第10個
main執行第10個的時候,p1 join.
p1執行第0個!
p1執行第1個!
p1執行第2個!
p1執行第3個!
p1執行第4個!
p1執行第5個!
p2執行第0個!
p2執行第1個!
p2執行第2個!
p2執行第3個!
p2執行第4個!
p2執行第5個!
p2執行第6個!
p1執行第6個!
p1執行第7個!
p1執行第8個!
p1執行第9個!
p1執行第10個!
p1執行第11個!
p1執行第12個!
p1執行第13個!
p1執行第14個!
p1執行第15個!
p1執行第16個!
p1執行第17個!
p2執行第7個!
p2執行第8個!
p2執行第9個!
p2執行第10個!
p2執行第11個!
p2執行第12個!
p2執行第13個!
p2執行第14個!
p2執行第15個!
p2執行第16個!
p2執行第17個!
p2執行第18個!
p2執行第19個!
p2執行第20個!
p2執行第21個!
p2執行第22個!
p2執行第23個!
p2執行第24個!
p1執行第18個!
p1執行第19個!
p1執行第20個!
p1執行第21個!
p1執行第22個!
p1執行第23個!
p1執行第24個!
p1執行第25個!
p1執行第26個!
p1執行第27個!
p2執行第25個!
p2執行第26個!
p2執行第27個!
p2執行第28個!
p2執行第29個!
p2執行第30個!
p2執行第31個!
p2執行第32個!
p2執行第33個!
p2執行第34個!
p2執行第35個!
p1執行第28個!
p1執行第29個!
p1執行第30個!
p1執行第31個!
p1執行第32個!
p1執行第33個!
p1執行第34個!
p1執行第35個!
p1執行第36個!
p1執行第37個!
p1執行第38個!
p2執行第36個!
p2執行第37個!
p2執行第38個!
p2執行第39個!
p2執行第40個!
p2執行第41個!
p2執行第42個!
p1執行第39個!
p1執行第40個!
p1執行第41個!
p1執行第42個!
p1執行第43個!
p1執行第44個!
p2執行第43個!
p2執行第44個!
p2執行第45個!
p2執行第46個!
p2執行第47個!
p2執行第48個!
p2執行第49個!
p2執行第50個!
p2執行第51個!
p2執行第52個!
p2執行第53個!
p1執行第45個!
p1執行第46個!
p1執行第47個!
p1執行第48個!
p1執行第49個!
p2執行第54個!
p2執行第55個!
p2執行第56個!
p2執行第57個!
p2執行第58個!
p2執行第59個!
p2執行第60個!
p2執行第61個!
p2執行第62個!
p2執行第63個!
p2執行第64個!
p2執行第65個!
p2執行第66個!
p2執行第67個!
p2執行第68個!
p2執行第69個!
p2執行第70個!
p2執行第71個!
p2執行第72個!
p2執行第73個!
p2執行第74個!
p2執行第75個!
p2執行第76個!
p2執行第77個!
p2執行第78個!
p2執行第79個!
p2執行第80個!
p2執行第81個!
p2執行第82個!
p2執行第83個!
p1執行第50個!
p1執行第51個!
p1執行第52個!
p1執行第53個!
p1執行第54個!
p1執行第55個!
p1執行第56個!
p1執行第57個!
p1執行第58個!
p1執行第59個!
p1執行第60個!
p1執行第61個!
p1執行第62個!
p1執行第63個!
p1執行第64個!
p1執行第65個!
p1執行第66個!
p1執行第67個!
p1執行第68個!
p1執行第69個!
p1執行第70個!
p1執行第71個!
p1執行第72個!
p1執行第73個!
p1執行第74個!
p1執行第75個!
p1執行第76個!
p1執行第77個!
p1執行第78個!
p1執行第79個!
p1執行第80個!
p1執行第81個!
p1執行第82個!
p1執行第83個!
p1執行第84個!
p1執行第85個!
p1執行第86個!
p1執行第87個!
p2執行第84個!
p2執行第85個!
p2執行第86個!
p2執行第87個!
p2執行第88個!
p2執行第89個!
p1執行第88個!
p1執行第89個!
p1執行第90個!
p1執行第91個!
p1執行第92個!
p1執行第93個!
p1執行第94個!
p1執行第95個!
p1執行第96個!
p1執行第97個!
p1執行第98個!
p1執行第99個!
p2執行第90個!
p2執行第91個!
p2執行第92個!
p2執行第93個!
p2執行第94個!
p2執行第95個!
p2執行第96個!
p2執行第97個!
p2執行第98個!
p2執行第99個!
p2執行第100個!
p2執行第101個!
p2執行第102個!
p2執行第103個!
p2執行第104個!
p2執行第105個!
p2執行第106個!
p2執行第107個!
p2執行第108個!
p2執行第109個!
p2執行第110個!
p2執行第111個!
p2執行第112個!
p2執行第113個!
p2執行第114個!
p2執行第115個!
p2執行第116個!
p2執行第117個!
p2執行第118個!
p2執行第119個!
p2執行第120個!
p2執行第121個!
p2執行第122個!
p1完成!
p2執行第123個!
main執行第11個
main執行第12個
main執行第13個
main執行第14個
main執行第15個
main執行第16個
main執行第17個
p2執行第124個!
p2執行第125個!
p2執行第126個!
p2執行第127個!
p2執行第128個!
p2執行第129個!
p2執行第130個!
p2執行第131個!
p2執行第132個!
p2執行第133個!
p2執行第134個!
p2執行第135個!
p2執行第136個!
p2執行第137個!
p2執行第138個!
p2執行第139個!
p2執行第140個!
p2執行第141個!
p2執行第142個!
p2執行第143個!
p2執行第144個!
p2執行第145個!
p2執行第146個!
p2執行第147個!
p2執行第148個!
p2執行第149個!
p2執行第150個!
p2執行第151個!
p2執行第152個!
p2執行第153個!
p2執行第154個!
main執行第18個
main執行第19個
main執行第20個
main執行第20個的時候,p2 join.
p2執行第155個!
p2執行第156個!
p2執行第157個!
p2執行第158個!
p2執行第159個!
p2執行第160個!
p2執行第161個!
p2執行第162個!
p2執行第163個!
p2執行第164個!
p2執行第165個!
p2執行第166個!
p2執行第167個!
p2執行第168個!
p2執行第169個!
p2執行第170個!
p2執行第171個!
p2執行第172個!
p2完成!
main執行第21個
main執行第22個
main執行第23個
main執行第24個
main執行第25個
main執行第26個
main執行第27個
main執行第28個
main執行第29個
主線程執行完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章