日期:2014-05-20  浏览次数:20656 次

我想实现逢10就转换线程,请高手帮我看看错误在哪里
public class TestYield {

public static void main(String[] args) {

MyThread t1 = new MyThread("t1");
MyThread t2 = new MyThread("t2");
t1.start();t2.start();
}

}

class MyThread extends Thread {

MyThread(String s){
super(s);
}

public void run(){

for(int i=1;i<=100;i++){
System.out.println( getName() + ": " + i );
if(i%10 == 0)
yield();

}

}

}

------解决方案--------------------
不过你需要保证的是第一次是按照10次来切换的
------解决方案--------------------
如果简单就是逢10 切换线程,我测试了一下,基本上可以,很少有未切换的情况。
为确保线程切换,在yield()后家一休眠1ms.
Java code
try
    {
        Thread.sleep(1);
    }
    catch(InterruptedException ie)
    {
        ie.printStackTrace();
    }