多线程之Join方法介绍

原创
2017/05/20 09:12
阅读数 40

说到join的使用,这边先讲一个案例。

多线程之Join方法介绍

假设这边有一个线程,在run方法里面随机睡眠一段时间。因为睡眠时间的不确定性,所以如果想要等到这个线程执行完在去执行另外一个线程的话,用睡眠唤醒另一个线程也不太实际。那么现在join方法就能做到这件事,join方法就是使一个线程等待另外一个线程执行完毕后执行。下面看一下简单的测试方法。

多线程之Join方法介绍

测试类

这边就能做到main线程等待mt线程执行完毕后继续执行~~相当于睡眠了mt线程一样的时间。那么join底层的原理是什么呢?我们来看下源码。

多线程之Join方法介绍

这里调用的是join(0),也就是millis为0 。可以看到这边底层是用wait方法来实现的,具体wait介绍可以看之前的代码。

mt.join()的作用是使所属线程mt执行完毕后(线程main处于阻塞状态),main线程等待mt线程执行完毕后在执行main后面的代码。

方法join也可以使线程类似于同步的运行,而join与synchronized的区别主要就是上面源码中展示的join使用wait方法进行等待(释放了锁)。而synchronized使用的是“对象监视器”原理作为同步。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部