- public class YieldTest extends Thread {
- YieldTest(String name)
- {
- super(name);
- }
- public void run()
- {
- for(int i=0;i<50;i++)
- {
- System.out.println(getName()+" "+i);
- if(i==20)
- {
- Thread.yield();
- }
- }
- }
- public static void main(String[] args) {
- YieldTest yt1=new YieldTest("最高级");
- yt1.setPriority(Thread.MAX_PRIORITY);
- yt1.start();
-
-
- YieldTest yt2=new YieldTest("最低级");
- yt2.setPriority(Thread.MIN_PRIORITY);
- yt2.start();
- }
- }
复制代码
设置了优先级之后使用yield,yield方法只能让同优先级的线程有执行的机会。按理说程序应该是会先执行线程1,然后执行到20,暂停然后判断一下时候有相同优先级的线程,如果没有应该继续执行线程1,但是现在的执行效果和没加优先级是一样的,请问是问什么呢? |
|