• <nav id="dstbx"></nav>

    <nav id="dstbx"></nav>
    1. <form id="dstbx"></form>
    2. <small id="dstbx"></small>

      教育行業A股IPO第一股(股票代碼 003032)

      全國咨詢/投訴熱線:400-618-4000

      Java線程優先級:Thread類的優先級常量

      更新時間:2021年11月10日13時52分 來源:傳智教育 瀏覽次數:

      好口碑IT培訓

      在應用程序中,如果要對線程進行調度,最直接的方式就是設置線程的優先級。優先級越高的線程獲得CPU執行的機會越大,而優先級越低的線程獲得CPU執行的機會越小。線程的優先級用1~10的整數來表示,數字越大優先級越高。除了可以直接使用數字表示線程的優先級外,還可以使用Thread類中提供的3個靜態常量表示線程的優先級,如下所示。

      Thread類的優先級常量
      Thread類的靜態常量 功能描述
      static int MAX_PRIORITY 表示線程的最高優先級,值為10
      static int MIN_PRIORITY 表示線程的最低優先級,值為1
      static int NORM_PRIORITY 表示線程的普通優先級,值為5

      程序在運行期間,處于就緒狀態的每個線程都有自己的優先級,例如,main線程具有普通優先級。然而線程優先級不是固定不變的,可以通過Thread類的setPriority(int newPriority)方法進行設置,setPriority()方法中的參數newPriority接收的是1~10的整數或者Thread類的3個靜態常量。下面通過一個案例演示不同優先級的兩個線程在程序中的運行情況,如下所示。

      // 定義類MaxPriority實現Runnable接口
      class MaxPriority implements Runnable{
          public void run(){
              for (int i=0;i<10;i++){
                  System.out.println(Thread.currentThread().getName() +"正在輸出:"+i);
              }
          }
      }
      // 定義類MinPriority實現Runnable接口
      class MinPriority implements Runnable {
          public void run(){
              for(int i =0; i<10; i++){
                  System.out.println(Thread.currentThread().getName() +"正在輸出:"+i);
              }
          }
      }
      public class Example01{
          public static void main (String[] args){
              // 創建兩個線程
              Thread minPriority = new Thread (new MinPriority(), "優先級較低的線程");
              Thread maxPriority = new Thread(new MaxPriority(),"優先級較高的線程");
              minPriority.setPriority (Thread.MIN_PRIORITY);      //設置線程的優先級為1
              maxPriority.setPriority (Thread.MAX_PRIORITY);      //設置線程的優先級為10
      
              //開啟兩個線程
              maxPriority.start();
              minPriority.start();
          }
      }

      下面代碼的運行結果如下圖所示。

      線程的優先級運行代碼

      第2~8行代碼定義了MaxPriority類并實現了Runnable接口,第10~16行代碼定義實現了Runnable接口的MinPriority類,并在MaxPriority類與MinPriority類中使用for循環打印正在發售的票數,在第22行代碼中使用MIN_PRIORITY方法設置minPriority線程的優先級為1,在第23行代碼中使用MAX_PRIORITY方法設置manPriority線程優先級為10。

      從運行結果可以看出,優先級較高的maxPriority線程先運行,運行完畢后優先級較低的minPriority線程才開始運行。所以優先級越高的線程獲取CPU切換時間片的概率就越大。



      猜你喜歡

      進程和線程的區別和聯系是什么?

      Java中的線程池有哪些?

      java線程休眠的sleep方法詳細介紹

      傳智教育Java培訓高手班課程

      0 分享到:
      神马影院我不卡