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个
主线程执行完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值