现在有T1,T2,T3三个线程,你怎样保证T2在T

//引用t1线程等待t1线程执行完 //引用t2線程,等待t2线程执行完

主要是使用了join()方法

看看jdk的join方法是洳何实现的吧

问题:现在有T1、T2、三个线程你怎样保证T2在T1执行完后执行,在T2执行完后执行

实现:使用Thread中的join方法实现

  1. Thread类中的join方法是用来同步的底层其实是调用了 wait方法。先来看一下演示玳码:
* 问题:现在有 T1、T2、 三个线程,怎样保证 T2 在 T1 执行完后执行在T2执行完 * 分析:使用join方法实现

可以看到我们让t2线程调用t1.join,调用t2.join,尽管是t2,t1分別start执行顺序还是t1,t2。是因为join方法底层使用的是wait方法

wait(delay);//传入时间,表示在时间值消耗完之前一直等待直到过了等待时间。

1)从源码中我们结合之前的代码分析,t2.join().join(),均没有传值相当于join(0),表示不计时间,t2会一直wait等待t1执行完成会一直wait等待t2执行完成。所以执行结果顺序是t2,t1

2)当传入的毫秒值不为0时,就一直循环等待直到过了等待时间(dalay<=0),则执行break方法那么将不再等待。

  1. 改变join()传入的毫秒值查看执行顺序並分析结果:
//处理业务时间,模拟为8秒
线程3 //程序启动过了2秒执行

分析:我们让t1 睡眠8秒模拟业务执行时间t2等待t1 的时间为4秒,等待t2的时间为2秒那么当t1,t2启动后,等待的时间会因为t2的等待时间4秒太长而先与t2执行,t2会因为t1的8秒太长而先与t1执行

我要回帖

更多关于 首都机场t2到t1怎么走 的文章

 

随机推荐