最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程中的Thread.yield()詳細(xì)解析

 更新時(shí)間:2023年11月29日 08:30:57   作者:安然望川海  
這篇文章主要介紹了Java線程中的Thread.yield()詳細(xì)解析,yield()讓當(dāng)前線程從運(yùn)行狀態(tài)?轉(zhuǎn)為?就緒狀態(tài),以允許具有相同優(yōu)先級(jí)的其他線程獲得運(yùn)行機(jī)會(huì),需要的朋友可以參考下

(1)線程運(yùn)行狀態(tài)轉(zhuǎn)換

在這里插入圖片描述

新建狀態(tài)(New):新創(chuàng)建了一個(gè)線程對象。

就緒狀態(tài)(可執(zhí)行狀態(tài),Runnable):線程對象創(chuàng)建后,其他線程調(diào)用了該對象的start()方法。該狀態(tài)的線程位于可運(yùn)行線程池中,變得可運(yùn)行,等待獲取CPU的使用權(quán)。

運(yùn)行狀態(tài)(運(yùn)行狀態(tài),Running):就緒狀態(tài)的線程獲取了CPU,執(zhí)行程序代碼。

阻塞狀態(tài)(Blocked):阻塞狀態(tài)是線程因?yàn)槟撤N原因放棄CPU使用權(quán),暫時(shí)停止運(yùn)行。直到線程進(jìn)入就緒狀態(tài),才有機(jī)會(huì)轉(zhuǎn)到運(yùn)行狀態(tài)。

阻塞的情況分三種:

(1) 等待阻塞:運(yùn)行的線程執(zhí)行wait()方法,該線程進(jìn)入等待池中                   

(2) 同步阻塞:運(yùn)行的線程在獲取對象的同步鎖時(shí),若該同步鎖被別的線程占用,則該線程進(jìn)入鎖池中

(3) 其他阻塞:運(yùn)行的線程執(zhí)行sleep()或join()方法,或者發(fā)出了I/O請求時(shí),該線程置為阻塞狀態(tài)。當(dāng)sleep()狀態(tài)超時(shí)、join()等待線程終止或者超時(shí)、或者I/O處理完畢時(shí),線程重新轉(zhuǎn)入就緒狀態(tài)。

死亡狀態(tài)(Dead):線程執(zhí)行完了或者因異常退出了run()方法,該線程結(jié)束生命周期。

(2)理解線程的優(yōu)先權(quán)

接下來,理解線程優(yōu)先級(jí)是很重要的一步,尤其是了解 yield() 函數(shù)的工作過程:

1、記住當(dāng)線程的優(yōu)先級(jí)沒有指定時(shí),所有線程都攜帶普通優(yōu)先級(jí)。

2、優(yōu)先級(jí)可以用從 1 到 10 的范圍指定。10 表示最高優(yōu)先級(jí),1 表示最低優(yōu)先級(jí),5 是普通優(yōu)先級(jí)。

3、記住優(yōu)先級(jí)最高的線程在執(zhí)行時(shí)被給予優(yōu)先。但是不能保證線程在啟動(dòng)時(shí)就進(jìn)入運(yùn)行狀態(tài)。

4、與在線程池中等待運(yùn)行機(jī)會(huì)的線程相比,當(dāng)前正在運(yùn)行的線程可能總是擁有更高的優(yōu)先級(jí)。

5、由調(diào)度程序決定哪一個(gè)線程被執(zhí)行。

6、t.setPriority() 用來設(shè)定線程的優(yōu)先級(jí)。

7、記住在線程 start() 方法被調(diào)用之前,線程的優(yōu)先級(jí)應(yīng)該被設(shè)定。

8、你可以使用常量,如 MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY 來設(shè)定優(yōu)先級(jí)。

(3)Thread.yield

方法作用: 讓當(dāng)前線程從運(yùn)行狀態(tài) 轉(zhuǎn)為 就緒狀態(tài),以允許具有相同優(yōu)先級(jí)的其他線程獲得運(yùn)行機(jī)會(huì)。

(4)代碼示例

public class Yield {
    public static void main(String[] args) {
        Thread[] threads = new Thread[2];
        for (int i=0;i<2;i++){
            int index=i;
            threads[i] = new Thread(new Runnable() {
                @Override
                public void run() {
                        System.out.println("threads"+index+":"+1);
                        Thread.yield();
                        System.out.println("threads"+index+":"+2);
                }
            });
            threads[i].start();
        }
    }
}

多次運(yùn)行會(huì)如下結(jié)果:

threads0:1
threads1:1
threads0:2
threads1:2

或者

threads0:1
threads0:2
threads1:1
threads1:2

結(jié)論:無法保證yield()達(dá)到讓步目的,因?yàn)樽尣降木€程還有可能被線程調(diào)度程序再次選中。

(5)總結(jié)

1、yield 是一個(gè)靜態(tài)的原生(native)方法。

2、yield 告訴當(dāng)前正在執(zhí)行的線程把運(yùn)行機(jī)會(huì)交給線程池中擁有相同優(yōu)先級(jí)的線程。

3、yield 不能保證使得當(dāng)前正在運(yùn)行的線程迅速轉(zhuǎn)換到可運(yùn)行的狀態(tài)。

4、它僅能使一個(gè)線程從運(yùn)行狀態(tài)轉(zhuǎn)到可運(yùn)行狀態(tài),而不是等待或阻塞狀態(tài)。

5、無法保證yield()達(dá)到讓步目的,因?yàn)樽尣降木€程還有可能被線程調(diào)度程序再次選中。

到此這篇關(guān)于Java線程中的Thread.yield()詳細(xì)解析的文章就介紹到這了,更多相關(guān)Thread.yield()詳細(xì)解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java構(gòu)造方法和方法重載詳解

    Java構(gòu)造方法和方法重載詳解

    大家好,本篇文章主要講的是Java構(gòu)造方法和方法重載詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • java存儲(chǔ)以及java對象創(chuàng)建的流程(詳解)

    java存儲(chǔ)以及java對象創(chuàng)建的流程(詳解)

    下面小編就為大家?guī)硪黄猨ava存儲(chǔ)以及java對象創(chuàng)建的流程(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java中實(shí)現(xiàn)文件預(yù)覽的功能(實(shí)例代碼)

    Java中實(shí)現(xiàn)文件預(yù)覽的功能(實(shí)例代碼)

    大家都知道word,Excel,PPT實(shí)現(xiàn)在線預(yù)覽常用的方式就是先轉(zhuǎn)換成pdf,然后在進(jìn)行預(yù)覽,下面給大家介紹Java中如何實(shí)現(xiàn)文件預(yù)覽的功能,需要的朋友可以參考下
    2023-05-05
  • SpringBoot2 整合FreeMarker實(shí)現(xiàn)頁面靜態(tài)化示例詳解

    SpringBoot2 整合FreeMarker實(shí)現(xiàn)頁面靜態(tài)化示例詳解

    這篇文章主要介紹了SpringBoot2 整合FreeMarker實(shí)現(xiàn)頁面靜態(tài)化示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • IDEA?database和datagrip無法下載驅(qū)動(dòng)問題解決辦法

    IDEA?database和datagrip無法下載驅(qū)動(dòng)問題解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA?database和datagrip無法下載驅(qū)動(dòng)問題的解決辦法,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用idea具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-03-03
  • java gui詳解貪吃蛇小游戲?qū)崿F(xiàn)流程

    java gui詳解貪吃蛇小游戲?qū)崿F(xiàn)流程

    剛開始學(xué)JAVA GUI,就練手寫了一個(gè)小時(shí)候經(jīng)常在諾基亞上玩的一個(gè)小游戲__貪吃蛇.做的比較簡單,但還是可以玩的.感興趣的朋友快來看看吧
    2021-11-11
  • Java?Collections工具類中常用算法解析

    Java?Collections工具類中常用算法解析

    在軟件開發(fā)中,算法是非常重要的一部分,它們可以提供高效的數(shù)據(jù)處理和操作,這篇文章主要為大家介紹了Collections?工具類集合框架中常用算法,感興趣的可以了解一下
    2023-06-06
  • 如何使用java制作假數(shù)據(jù)接口

    如何使用java制作假數(shù)據(jù)接口

    這篇文章主要介紹了如何使用java制作假數(shù)據(jù)接口,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關(guān)于Mysql的四種存儲(chǔ)引擎

    關(guān)于Mysql的四種存儲(chǔ)引擎

    這篇文章主要介紹了關(guān)于Mysql的四種存儲(chǔ)引擎,MySql的核心就是存儲(chǔ)引擎,不同的存儲(chǔ)引擎提供不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平等功能,使用不同的存儲(chǔ)引擎,還可以 獲得特定的功能,需要的朋友可以參考下
    2023-05-05
  • 關(guān)于JWT與cookie和token的區(qū)別說明

    關(guān)于JWT與cookie和token的區(qū)別說明

    這篇文章主要介紹了JWT與cookie和token的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

通榆县| 嘉善县| 长沙市| 女性| 庐江县| 交城县| 寿阳县| 泾源县| 沧州市| 万宁市| 唐河县| 固原市| 满洲里市| 黑水县| 延长县| 昭苏县| 中西区| 安吉县| 北川| 湛江市| 柳江县| 扶余县| 桂阳县| 辽宁省| 沙湾县| 营山县| 衡东县| 平和县| 图片| 海宁市| 化隆| 富裕县| 松潘县| 南开区| 仙居县| 昌江| 玉林市| 庆云县| 隆子县| 榆中县| 阜新市|