sleep yield

 

① sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;
② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;
③ sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;
④ sleep()方法比yield()方法(跟操作系统CPU调度相关)具有更好的可移植性.

 

public class YieldThread extends Thread {

    public YieldThread(String name) {  
        super(name);  
    } 
    
    public void run() {
        for (int i = 1; i <= 50; i++) {
            System.out.println("" + this.getName() + "-----" + i);
            // 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
            if (i == 30) {
                Thread.yield();
            }
        }
    }
    
    public static void main(String[] args) {
        YieldThread ta=new YieldThread("hello1");
        YieldThread tb=new YieldThread("hello2");
        ta.start();
        tb.start();
    }
}

 

hello1-----1
hello1-----2
hello1-----3
hello1-----4
hello2-----1
hello2-----2
hello2-----3
hello1-----5
hello2-----4
hello2-----5
hello2-----6
hello2-----7
hello2-----8
hello2-----9
hello2-----10
hello2-----11
hello2-----12
hello2-----13
hello2-----14
hello2-----15
hello2-----16
hello2-----17
hello2-----18
hello2-----19
hello2-----20
hello2-----21
hello2-----22
hello2-----23
hello2-----24
hello2-----25
hello2-----26
hello2-----27
hello2-----28
hello2-----29
hello2-----30
hello2-----31
hello2-----32
hello2-----33
hello2-----34
hello2-----35
hello2-----36
hello2-----37
hello2-----38
hello2-----39
hello1-----6
hello1-----7
hello1-----8
hello1-----9
hello1-----10
hello2-----40
hello2-----41
hello2-----42
hello2-----43
hello2-----44
hello2-----45
hello2-----46
hello2-----47
hello2-----48
hello2-----49
hello2-----50
hello1-----11
hello1-----12
hello1-----13
hello1-----14
hello1-----15
hello1-----16
hello1-----17
hello1-----18
hello1-----19
hello1-----20
hello1-----21
hello1-----22
hello1-----23
hello1-----24
hello1-----25
hello1-----26
hello1-----27
hello1-----28
hello1-----29
hello1-----30
hello1-----31
hello1-----32
hello1-----33
hello1-----34
hello1-----35
hello1-----36
hello1-----37
hello1-----38
hello1-----39
hello1-----40
hello1-----41
hello1-----42
hello1-----43
hello1-----44
hello1-----45
hello1-----46
hello1-----47
hello1-----48
hello1-----49
hello1-----50

 

posted @ 2018-04-21 10:40  牧 天  阅读(125)  评论(0)    收藏  举报