本帖最后由 彭盼 于 2012-6-29 09:39 编辑
package cn.pengpan.test;
public class YieldTest extends Thread{
private int i;
public YieldTest(){}
public YieldTest(String name){
super(name);
}
public void run(){
for(;i < 10;i++){
System.out.println(Thread.currentThread().getName() + "---->" + i);
if(i == 5){
Thread.yield();
}
}
}
public static void main(String[] args) {
YieldTest yt2 = new YieldTest("优先级为10的线程开始运行了");
yt2.setPriority(10);
yt2.start();
YieldTest yt1 = new YieldTest("优先级为1的线程开始运行了");
yt1.setPriority(1);
yt1.start();
}
}
后来执行的结果是前10个I都是优先级为10的线程在执行
后10个i都是优先级为1的线程在执行
为什么两个线程并没有象预期的一样交替执行呢?照代码的意思
应该是优先级为10的线程执行到i=5时就放弃线程的,然后i=6后
就应该是优先级为1的线程从头开始执行的 |
|