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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李阳 中级黑马   /  2013-1-31 17:29  /  1295 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李阳 于 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, 下载次数: 9)

QQ截图20130131172827.png

2 个回复

正序浏览
原来如此,谢谢了!
回复 使用道具 举报
yield()方法只是让当前线程交出CPU执行权,重新回到可执行状态,和其他具有可执行状态并且同样优先级的线程再次被CPU执行的概率是相同的,
也就是说,可能当前线程执行过yield()后,马上又被CPU执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马