Topic: 线程让步的问题

  Print this page

1.线程让步的问题 Copy to clipboard
Posted by: gleamyshadow
Posted on: 2006-06-05 20:44

下面这个代码中的X1行好象没有起到作用,运行情况和没有该行代码一样,都是线程1和线程2交替运行,请问是什么问题,还有,线程让步一般用在什么地方啊

public class Myyield extends Thread{
  public void run(){
    for(int i=1;i<=10;i++){
      System.out.println(getName()+":"+i);
      yield(); //X1
      try{
        sleep(100);
      }catch(InterruptedException ie){}
    }
  }
  public static void main (String[] args){
    Myyield a=new Myyield();
    Myyield b=new Myyield();
    a.start();
    b.start();
  }
}

2.Re:线程让步的问题 [Re: gleamyshadow] Copy to clipboard
Posted by: cxp108
Posted on: 2006-06-06 10:51

yield()是在线程不知道自己需要空闲多久的时候使用的。

例如:

.................
boolean getBusy = false;
public void doSomething(){
getBusy = true;
}

public void run(){
.............................
//线程空闲,但不知道何时开始忙
//每次轮到线程运行时,线程检查getBusy是否为ture(是否有活干?)
//如果getBusy为false,则线程继续将主动把运行权力让出(即继续睡眠)
//如果getBusy为true,线程就将不再把运行权力让出(即开始工作)
while( !getBusy ){
yield();
}



   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923