网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月27日
漏签
0
天
java吧
关注:
1,246,516
贴子:
12,723,724
看贴
图片
吧主推荐
视频
游戏
6
回复贴,共
1
页
<返回java吧
>0< 加载中...
[多线程]Thread.join(),深度解析
只看楼主
收藏
回复
乱世丶钱德勒
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上课时讲到了join这个方法,本来是一笔带过的,后来遇到问题没想到问题接踵而至...join()功能大家都知道但是当你看到Java.Thread.join()的源码时你就感觉好困惑,为此我来个深度解析,在多线程里不深度你永远都不会理解其中的真谛.
送TA礼物
IP属地:北京
1楼
2014-10-28 20:35
回复
米尼_Man
淼水
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
二楼学习。出售二楼
IP属地:北京
来自
Android客户端
2楼
2014-10-28 20:37
回复
收起回复
洛神呢
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
IP属地:河南
3楼
2014-10-28 20:40
回复
收起回复
乱世丶钱德勒
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
通过运行一段测试代码
然后运行结果:
Hi 0
Hi 1Hi 2Hi 3Hi 4Hi 5Hi 6Hi 7
Main is down!
----------------------------
在这个运行结果中我们看到确实是如果join()方法所解释的一样当前线程停止直至调用join()方法的线程运行结束后开始继续执行.当然问题是看到源码之后(可能是我笨吧一直没想到)
IP属地:北京
4楼
2014-10-28 20:41
回复
收起回复
乱世丶钱德勒
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
通过源码看到
这个方法是同步不可重写的方法,如果当我们调用了无参数的join方法时,代码将进入if(millis == 0)的代码块里,在这里不停的判断线程是否存活,如果存活将被等待挂起,关键是迷惑在于synchronized关键字修饰,如我们线程B调用join方法将锁住B的,应该B等待,那为什么它还在运行呢,而且主线程等待.
IP属地:北京
5楼
2014-10-28 20:46
回复
收起回复
乱世丶钱德勒
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其实在到代码b.join()时,其实是当前线程(main)去调用的join(),嗯,所以直接阻塞main线程,直到调用join()方法的线程死亡,
IP属地:北京
7楼
2014-10-28 20:55
回复
收起回复
wangshuyan202
水
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主,有个地方有点问题
在这里不停的判断线程是否存活
不是不停判断,而是一直等待直到超时或者是被唤醒,
奇怪的是 ,没找到唤醒的语句,应该是线程完毕后调用底层唤醒的
IP属地:上海
8楼
2015-09-19 22:38
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
大话王?Bin哥语录合订本来了
1801020
2
乌美矿产协议是不平等条约吗
1425582
3
美队4上映13天票房才破亿
1333220
4
日本米价暴涨甩锅给中国
1207737
5
好起来了!崩铁3.1剧情风评逆转
1201590
6
现在文娱作品有点令人觉得别扭
868575
7
拳头承认错误将撤回争议改动
834216
8
雷军力克钟睒睒成为中国新首富
633259
9
TES掀翻BLG挺进败决
632390
10
19岁棋手用AI作弊被禁赛8年
519792
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示