A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunxiaohong 中级黑马   /  2015-5-10 21:47  /  348 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程Thread的yield()方法可以和Thread的join()方法一起用么?

评分

参与人数 2黑马币 +7 收起 理由
xiaosuisky + 2 加油,同问啊
〃Mr.Zぐ + 5 赞一个!

查看全部评分

2 个回复

倒序浏览
当A线程执行到了B.join()方法时,A就会等待,等B线程都执行完后,A线程才会执行。join可以用来临时加入执行线程。yield ()强制临时释放执行权,让所有线程都能运行到。A只有等到B执行完了才会执行,而期间比如还有CD等更多线程,CPU会在除了A之外的线程里进行快速切换,直到B执行完,A才会参与到CPU执行权的争夺。所以可以一起使用。一起使用有啥意义就不知道了
回复 使用道具 举报
方法肯定有执行的先后顺序啦~yield()我自己理解就是放弃的意思 就是假设当前有一个A线程调用了yield()方法,则它就像在门口等着一样,他会让和他级别一样活着比他高级别的其他可执行线程去执行,但不会让比自己级别低的过去。如果是join()方法哪,字面意思就是参加,加入的意思,他可以有参数,如果是A.join(0),意思就是A这个线程要参加进来了,A就会一直执行完才会回到主线程。当然join(XX)中XX的参数可以给他定一个时间去执行,假设A.join(500),那就是给他500纳秒的时间去执行,500纳秒后回到主线程。你如果是先调用yield()在调用join()那最后的结果还是会执行join()方法啊。。。第一次回答问题。回答的不好 多关照哦。如果哪里说错了可以纠正一下 。要是没明白可以再问我。大家一起学习哦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马