黑马程序员技术交流社区

标题: 关于多线程中优先级和yield方法的问题。。。 [打印本页]

作者: 张旺达    时间: 2013-4-17 12:40
标题: 关于多线程中优先级和yield方法的问题。。。
本帖最后由 张旺达 于 2013-4-18 21:34 编辑

设置高的优先级可以使程序得到优先执行的几率,而yield方法是暂停当前正在执行的线程对象,并执行其他线程,能达到各线程有机会平均运行的效果。 那么,是不是可以说优先级和yield方法是“反义词”?也就是说它们是相互制约的?因为一个优先一个平均。
作者: java冬冬    时间: 2013-4-17 12:42
本帖最后由 java冬冬 于 2013-4-17 12:47 编辑

yield()方法作用是:暂停当前正在执行的线程对象并执行其他线程。  
yield()应该做的是让当前运行线程回到可运行状态以允许具有相同优先级的其他线程获得运行机会。
因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
但是实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。  
So,在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果{:soso_e152:}{:soso_e152:}
作者: 高梦晓    时间: 2013-4-17 15:48
yield只是让当前运行的线程“休息”一下,让其他正在等待的同优先级的线程先运行,然后再运行这个线程。所以这个线程还是要运行的。并且如果等待的线程优先级都要低于当前线程,那么下一个运行可能仍是这个线程。
作者: 黄玉昆    时间: 2013-4-18 20:16
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2