欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1. 繼承Thread類

重寫run()方法

new一個線程對象

調(diào)用對象的start()啟動線程

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

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

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

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

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

調(diào)用Thread()對象的start()啟動線程

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

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

繼承Thread類:

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

實現(xiàn)Runnable接口:

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

線程的完整生命周期:

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

六種裝態(tài):

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

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

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

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

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

終止狀態(tài):退出了run()方法,就是終止狀態(tài)了。

這就是一個線程的完整的生命周期。

總結(jié)

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

相關(guān)文章

  • Pulsar負載均衡原理及優(yōu)化方案詳解

    Pulsar負載均衡原理及優(yōu)化方案詳解

    這篇文章主要為大家介紹了Pulsar負載均衡原理及優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java項目的目錄結(jié)構(gòu)詳解

    Java項目的目錄結(jié)構(gòu)詳解

    本文主要介紹了Java項目的目錄結(jié)構(gòu)詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 深入理解java中i++和++i的區(qū)別

    深入理解java中i++和++i的區(qū)別

    下面小編就為大家?guī)硪黄钊肜斫鈐ava中i++和++i的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java?Mybatis使用resultMap時,屬性賦值順序錯誤的巨坑

    Java?Mybatis使用resultMap時,屬性賦值順序錯誤的巨坑

    這篇文章主要介紹了Java?Mybatis使用resultMap時,屬性賦值順序錯誤的巨坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java組件FileUpload上傳文件實現(xiàn)代碼

    Java組件FileUpload上傳文件實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了Java組件FileUpload上傳文件實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • idea?maven?經(jīng)常主目錄自動變回默認的解決方法

    idea?maven?經(jīng)常主目錄自動變回默認的解決方法

    很多朋友反映idea?maven?經(jīng)常主目錄自動變回默認,遇到這樣的問題真的很頭疼,該如何解決呢?下面小編給大家介紹下idea?maven目錄變回默認的解決方法,需要的朋友可以參考下
    2022-08-08
  • 從零開始學JAVA之可變參數(shù)

    從零開始學JAVA之可變參數(shù)

    本文是從零開始學JAVA的第一篇,屬于Java基礎(chǔ)知識介紹的第一部分,主要介紹Java的可變參數(shù),非常使用,希望對大家有所幫助
    2014-10-10
  • Java List集合排序?qū)崿F(xiàn)方法解析

    Java List集合排序?qū)崿F(xiàn)方法解析

    這篇文章主要介紹了Java List集合排序?qū)崿F(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java手機號碼工具類示例詳解(判斷運營商、獲取歸屬地)

    Java手機號碼工具類示例詳解(判斷運營商、獲取歸屬地)

    這篇文章主要介紹了Java手機號碼工具類示例詳解,通過手機號碼來判斷運營商獲取歸屬地,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • java判斷今天,昨天,前天,不能用秒間隔的簡單實例

    java判斷今天,昨天,前天,不能用秒間隔的簡單實例

    下面小編就為大家?guī)硪黄猨ava判斷今天,昨天,前天,不能用秒間隔的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論