亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中利用yield實現線程讓步

發布時間:2021-05-10 17:29:52 來源:億速云 閱讀:154 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關怎么在Java中利用yield實現線程讓步,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Java的優點是什么

1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。

一 點睛

yield()方法是一個和sleep()方法有點類似的方法,它是Thread類提供的一個靜態方法,它也可以讓當前正在執行的線程暫停,但它不會阻塞該線程,它只是讓線程轉入就緒狀態。yield只是讓當前線程暫停一下,讓系統的線程調度器重新調度一次,完全可能的情況是:當某個線程調用了yield()方法后,線程調度器又將其調度出來重新執行。

當某個線程調用了yield方法暫停之后,只有優先級與當前線程相同,或者優先級比當前線程更高的處于就緒狀態的線程才會獲得執行的機會。

二 代碼

public class YieldTest extends Thread
{
   public YieldTest(String name)
   {
      super(name);
   }
   // 定義run方法作為線程執行體
   public void run()
   {
      for (int i = 0; i < 50 ; i++ )
      {
        System.out.println(getName() + " " + i);
        // 當i等于20時,使用yield方法讓當前線程讓步
        if (i == 20)
        {
           Thread.yield();
        }
      }
   }
   public static void main(String[] args)throws Exception
   {
      // 啟動兩條并發線程
      YieldTest yt1 = new YieldTest("高級");
      // 將ty1線程設置成最高優先級
      //yt1.setPriority(Thread.MAX_PRIORITY);
      yt1.start();
      YieldTest yt2 = new YieldTest("低級");
      // 將yt2線程設置成最低優先級
      //yt2.setPriority(Thread.MIN_PRIORITY);
      yt2.start();
   }
}

三 運行

......
低級  18
低級  19
高級  15
低級  20
高級  16
高級  17
高級  18
高級  19
低級  21
高級  20
低級  22
低級  23
低級  24
低級  25
低級  26
...

四 說明

1 此時高級和低級兩個線程優先級一樣。

2 線程調用yield之后將執行機會讓給優先級相同的其他線程。

五 代碼2

public class YieldTest extends Thread
{
   public YieldTest(String name)
   {
      super(name);
   }
   // 定義run方法作為線程執行體
   public void run()
   {
      for (int i = 0; i < 50 ; i++ )
      {
        System.out.println(getName() + " " + i);
        // 當i等于20時,使用yield方法讓當前線程讓步
        if (i == 20)
        {
           Thread.yield();
        }
      }
   }
   public static void main(String[] args)throws Exception
   {
      // 啟動兩條并發線程
      YieldTest yt1 = new YieldTest("高級");
      // 將ty1線程設置成最高優先級
      yt1.setPriority(Thread.MAX_PRIORITY);
      yt1.start();
      YieldTest yt2 = new YieldTest("低級");
      // 將yt2線程設置成最低優先級
      yt2.setPriority(Thread.MIN_PRIORITY);
      yt2.start();
   }
}

六 運行2

高級  17
高級  18
高級  19
高級  20
高級  21
高級  22
高級  23
高級  24
高級  25
高級  26
高級  27
高級  28
......
高級  48
高級  49
低級  12
低級  13
低級  14
低級  15
低級  16
低級  17
低級  18
低級  19
低級  20
低級  21
低級  22
低級  23

上述就是小編為大家分享的怎么在Java中利用yield實現線程讓步了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马山县| 鲁山县| 依安县| 确山县| 涟源市| 襄樊市| 宣城市| 巴林左旗| 大洼县| 赞皇县| 贵定县| 闵行区| 西安市| 东海县| 礼泉县| 文成县| 泸定县| 金秀| 涟水县| 长丰县| 濮阳市| 兴安县| 金川县| 达州市| 盐池县| 保山市| 阳东县| 三亚市| 温泉县| 桃园市| 若羌县| 宣恩县| 九江市| 南投市| 思南县| 淮北市| 星座| 淄博市| 临城县| 蒙阴县| 肃南|