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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张旺达 于 2013-4-18 21:34 编辑

设置高的优先级可以使程序得到优先执行的几率,而yield方法是暂停当前正在执行的线程对象,并执行其他线程,能达到各线程有机会平均运行的效果。 那么,是不是可以说优先级和yield方法是“反义词”?也就是说它们是相互制约的?因为一个优先一个平均。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 java冬冬 于 2013-4-17 12:47 编辑

yield()方法作用是:暂停当前正在执行的线程对象并执行其他线程。  
yield()应该做的是让当前运行线程回到可运行状态以允许具有相同优先级的其他线程获得运行机会。
因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
但是实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。  
So,在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果{:soso_e152:}{:soso_e152:}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
yield只是让当前运行的线程“休息”一下,让其他正在等待的同优先级的线程先运行,然后再运行这个线程。所以这个线程还是要运行的。并且如果等待的线程优先级都要低于当前线程,那么下一个运行可能仍是这个线程。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马