亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java線程讓步y(tǒng)ield用法實例分析

 更新時間:2019年09月16日 10:47:51   作者:cakincqm  
這篇文章主要介紹了Java線程讓步y(tǒng)ield用法,結(jié)合實例形式分析了java中yield()方法的功能、原理及線程讓步操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Java線程讓步y(tǒng)ield用法。分享給大家供大家參考,具體如下:

一 點睛

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

當(dāng)某個線程調(diào)用了yield方法暫停之后,只有優(yōu)先級與當(dāng)前線程相同,或者優(yōu)先級比當(dāng)前線程更高的處于就緒狀態(tài)的線程才會獲得執(zhí)行的機會。

二 代碼

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

三 運行

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

四 說明

1 此時高級和低級兩個線程優(yōu)先級一樣。

2 線程調(diào)用yield之后將執(zhí)行機會讓給優(yōu)先級相同的其他線程。

五 代碼2

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

七 說明2

1 兩個線程的優(yōu)先級不同。

2 高優(yōu)先級的線程調(diào)用yield方法暫停之后,系統(tǒng)沒有與之優(yōu)先級相同,或更高優(yōu)先級的線程,所以該線程繼續(xù)執(zhí)行。

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • 使用JavaMail發(fā)送郵件保證成功的方法

    使用JavaMail發(fā)送郵件保證成功的方法

    JavaMail是利用現(xiàn)有的郵件賬戶發(fā)送郵件的工具,使用過JavaMail的api發(fā)送郵件的人可能會有這樣一個疑惑:我如何知道我調(diào)用該api發(fā)送的郵件是否成功呢?那么通過下面這篇文章大家一起來看看使用JavaMail保證郵件發(fā)送成功的方法,有需要的朋友們可以參考借鑒。
    2016-11-11
  • Springboot整合nacos報錯無法連接nacos的解決

    Springboot整合nacos報錯無法連接nacos的解決

    這篇文章主要介紹了Springboot整合nacos報錯無法連接nacos的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java中的synchronized關(guān)鍵字

    Java中的synchronized關(guān)鍵字

    這篇文章主要介紹了Java中的synchronized關(guān)鍵字,synchronized可以保證方法或代碼塊在運行時,同一時刻只有一個線程可以進(jìn)入到臨界區(qū)(互斥性),同時它還保證了共享變量的內(nèi)存可見性,下面我們就來看看你文章對synchronized鎖的介紹,需要的朋友也可以參考一下
    2021-12-12
  • springboot2整合redis使用lettuce連接池的方法(解決lettuce連接池?zé)o效問題)

    springboot2整合redis使用lettuce連接池的方法(解決lettuce連接池?zé)o效問題)

    這篇文章主要介紹了springboot2整合redis使用lettuce連接池(解決lettuce連接池?zé)o效問題),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Spring中的BeanFactory與FactoryBean區(qū)別詳解

    Spring中的BeanFactory與FactoryBean區(qū)別詳解

    這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個接口,它是spring中的一個工廠,FactoryBean也是一個接口,實現(xiàn)了3個方法,通過重寫其中方法自定義生成bean,需要的朋友可以參考下
    2024-01-01
  • SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例

    SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例

    在緩存的使用場景中經(jīng)常需要使用到過期事件,本文主要介紹了SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • java中常用的字符串的比較方法(兩種)

    java中常用的字符串的比較方法(兩種)

    本文主要介紹了java中兩種常用的字符串的比較方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Spring中propagation的7種事務(wù)配置及說明

    Spring中propagation的7種事務(wù)配置及說明

    這篇文章主要介紹了Spring中propagation的7種事務(wù)配置及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中數(shù)組的定義和使用教程(一)

    Java中數(shù)組的定義和使用教程(一)

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • springboot使用maven實現(xiàn)多環(huán)境運行和打包問題

    springboot使用maven實現(xiàn)多環(huán)境運行和打包問題

    這篇文章主要介紹了springboot使用maven實現(xiàn)多環(huán)境運行和打包問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論