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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class YieldTest extends Thread {
  2.         YieldTest(String name)
  3.         {
  4.                 super(name);
  5.         }
  6.         public void run()
  7.         {
  8.                 for(int i=0;i<50;i++)
  9.                 {
  10.                         System.out.println(getName()+"     "+i);
  11.                         if(i==20)
  12.                         {
  13.                                 Thread.yield();
  14.                         }
  15.                 }
  16.         }
  17. public static void main(String[] args) {
  18.         YieldTest yt1=new YieldTest("最高级");
  19.         yt1.setPriority(Thread.MAX_PRIORITY);
  20.         yt1.start();

  21.        
  22.        
  23.         YieldTest yt2=new YieldTest("最低级");
  24.         yt2.setPriority(Thread.MIN_PRIORITY);
  25.         yt2.start();
  26. }
  27. }
复制代码

设置了优先级之后使用yield,yield方法只能让同优先级的线程有执行的机会。按理说程序应该是会先执行线程1,然后执行到20,暂停然后判断一下时候有相同优先级的线程,如果没有应该继续执行线程1,但是现在的执行效果和没加优先级是一样的,请问是问什么呢?

1 个回复

倒序浏览
没有人知道么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马