public class TestYield2 {
  public static void main(String[] args) {
    MyThread3 t1 = new MyThread3("t1");
    MyThread3 t2 = new MyThread3("t2");
    t1.start(); t2.start();
  }
}
class MyThread3 extends Thread {
  MyThread3(String s){super(s);}
  public void run(){
    for(int i =1;i<=100;i++){
      System.out.println(getName()+": "+i);
      if(i%10==0){
        yield();
      }
    }
  }
}

解决方案 »

  1.   

    计算机运行这个的速度是很快的。我用你的程序测试了一下。
    t泡到50多的时候t2才开始。
    也就是说t1虽然放弃了使用权,但是由于速度太快,又马上重新占有使用权了。
    你改成下面这样就能看到所要的效果了
    class MyThread3 extends Thread 
    {   
    MyThread3(String s){super(s);}
    public void run(){
    for(int i =1;i<=100;i++){
    System.out.println(getName()+": "+i);
    if(i%10==0){
    try {
    Thread.currentThread().sleep(1000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    yield();
    }

    }

    }
    }
      

  2.   

    这里不加java格式了,方便你粘贴