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

關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比

 更新時(shí)間:2022年01月12日 10:35:33   作者:阿桑同學(xué).  
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Java中兩種創(chuàng)建線程的方式:

1. 繼承Thread類

重寫run()方法

new一個(gè)線程對(duì)象

調(diào)用對(duì)象的start()啟動(dòng)線程

    class Handler extends Thread{
        public void run(){
            //重寫run()方法
        }
        public static void main(String[] args){
            Thread thread=new Handler();//創(chuàng)建線程對(duì)象
            thread.start();//啟動(dòng)線程
        }
    }

2. 實(shí)現(xiàn)Runnable接口:

實(shí)現(xiàn)run()方法

創(chuàng)建一個(gè)Runnable類的對(duì)象 r,new Runnable()

創(chuàng)建Thread類對(duì)象并將Runnable對(duì)象作為參數(shù),new Thread®

調(diào)用Thread()對(duì)象的start()啟動(dòng)線程

    class Handler implements Runnable{
        public void run(){
            //重寫run()方法
        }
        public static void main(String[] args){
            //創(chuàng)建線程對(duì)象
            Handler handler=new Handler();
            Thread thread=new Thread(handler);
            //啟動(dòng)線程
            thread.start();
        }
    }

創(chuàng)建線程的兩種方式對(duì)比:

繼承Thread類:

  • 優(yōu)點(diǎn):編寫簡(jiǎn)單,如果需要訪問(wèn)當(dāng)前線程直接使用this即可獲得當(dāng)前線程
  • 缺點(diǎn):線程類已經(jīng)繼承了Thread類,不能再繼承其它的父類

實(shí)現(xiàn)Runnable接口:

  • 優(yōu)點(diǎn):線程類只實(shí)現(xiàn)了Runnable接口,還可以繼承其他的類??梢詫?shí)現(xiàn)多個(gè)線程共享一個(gè)目標(biāo)對(duì)象,非常適合多個(gè)相同線程來(lái)處理同一份資源的情況。
  • 缺點(diǎn):編程稍微復(fù)雜,需要訪問(wèn)當(dāng)前線程,必須使用Thread.currentThread()方法

線程的完整生命周期:

線程的執(zhí)行通常是Java虛擬機(jī)來(lái)調(diào)度的,調(diào)度線程發(fā)送給cpu指令,取得cpu的使用權(quán),cpu在一個(gè)時(shí)刻只能執(zhí)行一條指令,線程得到了cpu的時(shí)間片,也就是使用權(quán)后再繼續(xù)執(zhí)行。

六種裝態(tài):

起始狀態(tài):采用new對(duì)象創(chuàng)建完成時(shí);

可運(yùn)行狀態(tài):線程對(duì)象調(diào)用調(diào)用了start()方法,進(jìn)入到可運(yùn)行狀態(tài),等待獲取時(shí)間片,運(yùn)行;

運(yùn)行狀態(tài):得到CPU的時(shí)間片,執(zhí)行中,運(yùn)行中可能會(huì)有優(yōu)先級(jí)更高的線程需要執(zhí)行,丟失時(shí)間片回到可運(yùn)行狀態(tài),再等待獲取時(shí)間片;

阻塞狀態(tài):發(fā)生阻塞事件時(shí),如當(dāng)前線程調(diào)用Thread.sleep()方法、或者當(dāng)前線程調(diào)用另一線程的join()的方法,或者調(diào)用了Thread.yield()方法時(shí),當(dāng)前線程都會(huì)進(jìn)入到阻塞狀態(tài)。直到解除阻塞狀態(tài),重新進(jìn)入到到可運(yùn)行狀態(tài),等待運(yùn)行;

鎖池狀態(tài):當(dāng)前線程執(zhí)行到有一個(gè)對(duì)象有synchronized 標(biāo)記的方法時(shí),當(dāng)前線程進(jìn)入到鎖池狀態(tài),其他線程也要訪問(wèn)有synchronize標(biāo)記的這個(gè)語(yǔ)句塊時(shí),暫時(shí)都先進(jìn)入到【等待隊(duì)列】,只有當(dāng)前線程執(zhí)行完畢或者調(diào)用了notify()或者notifyAll()方法時(shí),其他線程才能進(jìn)入到鎖池狀態(tài),準(zhǔn)備獲得鎖標(biāo)記,進(jìn)行執(zhí)行操作。當(dāng)然如果當(dāng)前線程執(zhí)行了wait()方法,與sleep不同,當(dāng)前線程就會(huì)放棄所有的資源,進(jìn)入到等待對(duì)列,等待有其他線程調(diào)用notify()和notifyAll()時(shí)進(jìn)行激活。

終止?fàn)顟B(tài):退出了run()方法,就是終止?fàn)顟B(tài)了。

這就是一個(gè)線程的完整的生命周期。

總結(jié)

到此這篇關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比的文章就介紹到這了,更多相關(guān)Java創(chuàng)建線程方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis中正則使用foreach拼接字符串

    MyBatis中正則使用foreach拼接字符串

    這篇文章主要介紹了MyBatis中正則使用foreach拼接字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringMVC?RESTFul實(shí)戰(zhàn)案例訪問(wèn)首頁(yè)

    SpringMVC?RESTFul實(shí)戰(zhàn)案例訪問(wèn)首頁(yè)

    這篇文章主要為大家介紹了SpringMVC?RESTFul實(shí)戰(zhàn)案例訪問(wèn)首頁(yè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(11)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(11)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • Seata AT模式如何實(shí)現(xiàn)行鎖詳解

    Seata AT模式如何實(shí)現(xiàn)行鎖詳解

    這篇文章主要為大家介紹了Seata AT模式如何實(shí)現(xiàn)行鎖詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • MyBatis-plus批量插入的通用方法使用

    MyBatis-plus批量插入的通用方法使用

    mybatis-plus的IService接口默認(rèn)提供saveBatch批量插入,也是唯一一個(gè)默認(rèn)批量插入,在數(shù)據(jù)量不是很大的情況下可以直接使用,本文帶你詳細(xì)了解MyBatis-plus 批量插入的通用方法及使用方法,需要的朋友可以參考一下
    2023-04-04
  • 可視化定時(shí)任務(wù)quartz集成解析全過(guò)程

    可視化定時(shí)任務(wù)quartz集成解析全過(guò)程

    在開(kāi)發(fā)中有很多定時(shí)任務(wù)都不是寫死的而是可以人為配置并且寫到數(shù)據(jù)庫(kù)中的,下面這篇文章主要給大家介紹了關(guān)于可視化定時(shí)任務(wù)quartz集成解析的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java指令重排引發(fā)問(wèn)題及解決方案

    Java指令重排引發(fā)問(wèn)題及解決方案

    指令重排是JVM在解釋執(zhí)行Java代碼時(shí)對(duì)指令順序進(jìn)行重新排列的一種優(yōu)化技術(shù),本文主要介紹了Java指令重排引發(fā)問(wèn)題及解決方案,感興趣的可以了解一下
    2023-08-08
  • java實(shí)現(xiàn)app簽到功能

    java實(shí)現(xiàn)app簽到功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)app簽到功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 解決springboot?druid數(shù)據(jù)庫(kù)連接池連接失敗后一直重連問(wèn)題

    解決springboot?druid數(shù)據(jù)庫(kù)連接池連接失敗后一直重連問(wèn)題

    這篇文章主要介紹了解決springboot?druid數(shù)據(jù)庫(kù)連接池連接失敗后一直重連問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 深入理解java線程通信

    深入理解java線程通信

    開(kāi)發(fā)中不免會(huì)遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場(chǎng)景?;蛘呤蔷€程 A 在執(zhí)行到某個(gè)條件通知線程 B 執(zhí)行某個(gè)操作。下面我們來(lái)一起學(xué)習(xí)如何解決吧
    2019-05-05

最新評(píng)論

察哈| 鸡东县| 泸定县| 望谟县| 休宁县| 丰城市| 阿坝县| 久治县| 海盐县| 新绛县| 凌海市| 闽侯县| 商洛市| 云南省| 乌鲁木齐市| 鲜城| 宜川县| 东丽区| 邵东县| 夏河县| 南充市| 金湖县| 南靖县| 重庆市| 方山县| 连江县| 平利县| 息烽县| 商南县| 屏南县| 揭西县| 定西市| 枣阳市| 砀山县| 隆回县| 平乐县| 河曲县| 乐山市| 泰来县| 平泉县| 高青县|