Java 執行緒調度之睡眠用法解析。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整解析正文
本文實例分析了 Java 執行緒調度之執行緒睡眠用法。分享給大家供參考。詳細分析如下:
Java 執行緒調度是 Java 多執行緒的核心,只有優秀的調度,才能充分發揮系統效能,提高程式執行效率。這裡要明白一點,無論程式設計師如何編寫調度,只能最大程度影響執行緒執行順序,而無法做到精準控制。
執行緒睡眠的目的是讓出 CPU 最簡單的做法之一,執行緒睡眠時會將 CPU 資源交給其他執行緒,以便輪換執行,當睡眠一定時間後,執行緒會甦醒,進入就緒狀態等待執行。
執行緒睡眠的方法是 Thread.sleep(long millis) 和 Thread.sleep(long millis, int nanos),均為靜態方法。誰呼叫 sleep 就讓哪個執行緒睡眠。
/** Java 執行緒:執行緒調度-睡眠 */
public class Test {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Thread t2 = new Thread(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(); }
}
}
}
執行結果如下:
執行緒2第0次執行! 執行緒1第0次執行! 執行緒1第1次執行! 執行緒2第1次執行! 執行緒1第2次執行! 執行緒2第2次執行! Process finished with exit code 0
從結果輸出可以看出,無法精準保證執行緒執行順序。