91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

拉萨市| 西峡县| 沅江市| 洞口县| 乃东县| 乌兰县| 巨鹿县| 女性| 北海市| 息烽县| 布拖县| 临邑县| 稷山县| 韶关市| 丰县| 万山特区| 平湖市| 沾益县| 桃园县| 长垣县| 龙陵县| 互助| 濮阳县| 宜宾市| 林周县| 东丽区| 正定县| 象山县| 平阴县| 大渡口区| 麻江县| 玉林市| 汝阳县| 依兰县| 文安县| 巴中市| 茌平县| 奎屯市| 西平县| 安平县| 乐陵市|