黑马程序员技术交流社区

标题: 线程中yield方法的疑问? [打印本页]

作者: 李阳    时间: 2013-1-31 17:29
标题: 线程中yield方法的疑问?
本帖最后由 李阳 于 2013-1-31 20:34 编辑

class YieldTest
{
public static void main(String[] args) throws Exception
{
  Demo d = new Demo();
  Thread t = new Thread(d);
  t.start();
  //t.join();
  for (int x = 0;x<100 ;x++ )
  {
   //Thread.yield();
   System.out.println(Thread.currentThread().getName()+"---主线程");
   Thread.yield();
  }
}
}
class Demo implements Runnable
{
public  void run()
{
  for (int x = 0;x<100 ;x++ )
  {
   //Thread.yield();
   System.out.println(Thread.currentThread().getName()+"---线程");
   Thread.yield();
  }
}
为什么不是主线程和0线程一对一的交替运行?

QQ截图20130131172827.png (4.31 KB, 下载次数: 6)

QQ截图20130131172827.png

作者: 黑马刘向阳    时间: 2013-1-31 18:00
yield()方法只是让当前线程交出CPU执行权,重新回到可执行状态,和其他具有可执行状态并且同样优先级的线程再次被CPU执行的概率是相同的,
也就是说,可能当前线程执行过yield()后,马上又被CPU执行
作者: 李阳    时间: 2013-1-31 20:35
原来如此,谢谢了!




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