关于yield()方法;

nemo天地 2008-05-10 12:34:11
public class YieldTest {
public static void main(String[] args) {
Thread t1=new MyThreadG();
Thread t2=new MyThreadH();
t1.start();
t2.start();
}

}

class MyThreadG extends Thread{
public void run(){
int i=0;
while(i<100){
i++;
for(int j=0;j<100000;j++)
;
System.out.println(i);
if(i%10==0){
Thread.yield();//放弃CPU执行权
}
}
}
}

class MyThreadH extends Thread{
public void run(){
char c='A'-1;
while(c<'Z'){
c++;
for(int i=0;i<100000;i++)
;
System.out.println(c);
}
}
}
输入的结果怎么不对,应该是每隔10个输出一个字母吧,可是为什么结果不是啊!
程序对的,为什么呢,是不是跟电脑CPU有关啊!
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-05-10
  • 打赏
  • 举报
回复
class MyThreadH extends Thread {
public void run() {
char c = 'A' - 1;
while (c < 'Z') {
c++;
System.out.println(c);
Thread.yield();// 放弃CPU执行权
}
}
}


你应该让 MyThreadH 也放弃CPU,这样就可以让他们有平等的机会了!
老紫竹 2008-05-10
  • 打赏
  • 举报
回复
线程的运行不在于你的猜测。

并不能保证 yield后就不会获得控制权
nemo天地 2008-05-10
  • 打赏
  • 举报
回复
谢谢了,可是有的电脑为什么可以得到预期的结果呢!

58,446

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧