Thread yield

      在〈Thread yield〉中尚無留言

退讓

yield 跟sleep一樣, 都是Thread的static 方法.

請注意一件事, 退讓, 是指將自已(目前執行緒)退出running 並回到runable區, 下次再跟其它執行緒竸爭.

退讓這件事, 絕對不是叫別的執行緒退出. 逼退皇帝讓位, 這不叫讓位,  這叫篡位

下述程式碼中, 因為t1常常自己退出Running, 所以main先完成的機會就比t1大很多.

public class JavaApp{
    public static void main(String[] args) {
        Thread t1=new Thread(new Job(), "t1");
        t1.start();  
        for (int i=1;i<=100;i++){
            System.out.printf("%s:%d\n", 
                    Thread.currentThread().getName(), i);
        }        
    }
}
class Job implements Runnable{
    public void run(){
        for (int i=1;i<=100;i++){
            System.out.printf("%s:%d\n", 
                    Thread.currentThread().getName(), i);
            if(i%2==0)Thread.yield();
        }
    }
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *