Java線程排程是Java多線程的核心,隻有良好的排程,才能充分發揮系統的性能,提高程式的執行效率。
這裡要明确的一點,不管程式員怎麼編寫排程,隻能最大限度的影響線程執行的次序,而不能做到精準控制。
線程休眠的目的是使線程讓出CPU的最簡單的做法之一,線程休眠時候,會将CPU資源交給其他線程,以便能輪換執行,當休眠一定時間後,線程會蘇醒,進入準備狀态等待執行。
線程休眠的方法是Thread.sleep(long millis)和Thread.sleep(long millis, int nanos),均為靜态方法,那調用sleep休眠的哪個線程呢?簡單說,哪個線程調用sleep,就休眠哪個線程。
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();
}
}
}
}
}
線程1第0次執行!
線程2第0次執行!
線程1第1次執行!
線程2第1次執行!
線程1第2次執行!
線程2第2次執行!
從上面的結果輸出可以看出,無法精準保證線程執行次序。
本文轉自http://www.cnblogs.com/linjiqin/p/3209885.html 感謝作者