当前位置:编程学习 > JAVA >>

多线程yield的问题


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();
      }
    }
  }
}

--------------------编程问答-------------------- 计算机运行这个的速度是很快的。我用你的程序测试了一下。
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();
}

}

}
} --------------------编程问答-------------------- 这里不加java格式了,方便你粘贴
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,