首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 執行緒調度之睡眠用法解析

     編輯:Java 相關知識

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

從結果輸出可以看出,無法精準保證執行緒執行順序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved