天天看點

java thread sleep 效率_Java多線程-線程的排程(休眠)

Java線程排程是Java多線程的核心,隻有良好的排程,才能充分發揮系統的性能,提高程式的執行效率。

這裡要明确的一點,不管程式員怎麼編寫排程,隻能最大限度的影響線程執行的次序,而不能做到精準控制。

線程休眠的目的是使線程讓出CPU的最簡單的做法之一,線程休眠時候,會将CPU資源交給其他線程,以便能輪換執行,當休眠一定時間後,線程會蘇醒,進入準備狀态等待執行。

線程休眠的方法是Thread.sleep(long millis)和Thread.sleep(long millis, int nanos),均為靜态方法,那調用sleep休眠的哪個線程呢?簡單說,哪個線程調用sleep,就休眠哪個線程。

java thread sleep 效率_Java多線程-線程的排程(休眠)

package cn.thread;

public class ThreadSleep {

public static void main(String[] args) {

ThreadSleep sleep = new ThreadSleep();

Thread t1 = sleep.new MyThread1();

Thread t2 = new Thread(sleep.new MyRunnable());

t1.start();

t2.start();

}

class MyThread1 extends Thread {

public void run() {

for (int i = 0; i < 3; i++) {

System.out.println("線程1第" + i + "次執行!");

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

class MyRunnable implements Runnable {

public void run() {

for (int i = 0; i < 3; i++) {

System.out.println("線程2第" + i + "次執行!");

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

java thread sleep 效率_Java多線程-線程的排程(休眠)

線程1第0次執行!

線程2第0次執行!

線程1第1次執行!

線程2第1次執行!

線程1第2次執行!

線程2第2次執行!

從上面的結果輸出可以看出,無法精準保證線程執行次序。

本文轉自http://www.cnblogs.com/linjiqin/p/3209885.html 感謝作者