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

Java中線程Thread的特點及使用

 更新時間:2023年04月21日 09:06:35   作者:lmrylll  
這篇文章主要介紹了Java中線程的特點及使用,線程是進(jìn)程的組成部分,一個進(jìn)程可以擁有多個線程,而一個線程必須擁有一個父進(jìn)程,那么線程該如何使用,讓我們一起來看看吧

線程:線程是進(jìn)程的組成部分,一個進(jìn)程可以擁有多個線程,而一個線程必須擁有一個父進(jìn)程。線程可以擁有自己的堆棧,自己的程序計數(shù)器和自己的局部變量,但不能擁有系統(tǒng)資源。它與父進(jìn)程的其他線程共享該進(jìn)程的所有資源。

線程的特點:

線程可以完成一定任務(wù),可以和其它線程共享父進(jìn)程的共享變量和部分環(huán)境,相互協(xié)作來完成任務(wù)。

線程是獨(dú)立運(yùn)行的,其不知道進(jìn)程中是否還有其他線程存在。

線程的執(zhí)行是搶占式的,也就是說,當(dāng)前執(zhí)行的線程隨時可能被掛起,以便運(yùn)行另一個線程。

一個線程可以創(chuàng)建或撤銷另一個線程,一個進(jìn)程中的多個線程可以并發(fā)執(zhí)行。

二:線程的創(chuàng)建及使用

java使用Thread類代表線程,所有的線程對象都必須是Thread或者其子類的實例,每個線程的作用是完成一定任務(wù),實際上是就是執(zhí)行一段程序流(一段順序執(zhí)行的代碼)

方案一:繼承Thread類創(chuàng)建線程類

步驟:

1.定義Thread類的子類 并重寫該類的Run方法,該run方法的方法體就代表了該線程需要完成的任務(wù)

2.創(chuàng)建Thread類的實例,即創(chuàng)建了線程對象

3.調(diào)用線程的start方法來啟動線程

結(jié)論:使用繼承子Thread類的子類來創(chuàng)建線程類時,多個線程無法共享線程類的實例變量(比如上面的i)

方案二:實現(xiàn)Runnable接口

1:定義Runnable接口的實現(xiàn)類,并重寫它的Run方法,run方法同樣是該線程的執(zhí)行體!

2:創(chuàng)建Runnable實現(xiàn)類的實例,并將此實例作為Thread的target創(chuàng)建一個Thread對象,該Thread對象才是真正的線程對象!

3:調(diào)用start方法啟動該線程

結(jié)論:采用Ruunable接口的方式創(chuàng)建多個線程可以共享線程類的實例變量,這是因為在這種方式下,程序創(chuàng)建的Runnable對象只是線程的target,而多個線程可以共享一個target,所以多個線程可以共享一個實例變量

通過Runnable實現(xiàn)多線程其實就是將run包裝成線程的執(zhí)行體,但是目前java無法將任意方法包裝成線程執(zhí)行體

方案三:使用callable和future創(chuàng)建線程

從Java5開始,Java提供 Callable接口,Callable接口提供了一個call()方法可以作為線程執(zhí)行體,看起來和Runnable很像,但call()方法更強(qiáng)大——call()方法可以有返回值、call()方法可以拋出異常

 

Java5提供了Future接口來代表Callable接口的call()方法的返回值,并為Future接口提供了一個FutureTask實現(xiàn)類,該實現(xiàn)類實現(xiàn)類Future接口,也實現(xiàn)了Runnable接口——可以作為Thread的target。

實現(xiàn)步驟:

1:創(chuàng)建Callable接口的實現(xiàn)類,并實現(xiàn)call方法,該call方法會成為線程執(zhí)行體,且call方法具有返回值,在創(chuàng)建callable接口的實現(xiàn)類!

2:使用FutrueTask類來包裝Callable對象,該FutrueTask封裝類Callable的call方法的返回值

3:使用FutrueTask對象作為Thread的target創(chuàng)建并啟動新線程!

4:使用FutrueTask的get方法獲取執(zhí)行結(jié)束后的返回值

結(jié)論:采取Runnable、Callable的優(yōu)勢在于——線程類只是實現(xiàn)了Runnable或Callable接口,還可以繼承其它類;在這種方法下,多個線程可以共享一個target對象,因此非常適合多個相同線程處理同一份資源的情況,從而將CPU、代碼和數(shù)據(jù)分開,形參清晰的模型,體現(xiàn)了面對對象的編程思想。劣勢在于編程復(fù)雜度略高。

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

相關(guān)文章

  • Java中static與instance的區(qū)別及作用詳解

    Java中static與instance的區(qū)別及作用詳解

    這篇文章主要為大家介紹了Java中static與instance的區(qū)別及作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java中實現(xiàn)時間類型轉(zhuǎn)換的代碼詳解

    Java中實現(xiàn)時間類型轉(zhuǎn)換的代碼詳解

    這篇文章主要為大家詳細(xì)介紹了Java中實現(xiàn)時間類型轉(zhuǎn)換的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下
    2023-09-09
  • 詳解java如何解析和生成sql

    詳解java如何解析和生成sql

    JSQLParser?是一個開源的?Java?庫,用于解析?SQL?語句并將其轉(zhuǎn)換為抽象語法樹,下面我們就來看看java是如何使用JSQLParser解析和生成sql的吧
    2024-12-12
  • Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊

    Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊

    這篇文章主要介紹了Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java設(shè)計模式之模板模式(Template模式)介紹

    Java設(shè)計模式之模板模式(Template模式)介紹

    這篇文章主要介紹了Java設(shè)計模式之模板模式(Template模式)介紹,定義一個操作中算法的骨架,將一些步驟的執(zhí)行延遲到其子類中,需要的朋友可以參考下
    2015-03-03
  • 如何在Maven項目配置pom.xml指定JDK版本和編碼

    如何在Maven項目配置pom.xml指定JDK版本和編碼

    maven是個項目管理工具,如果我們不告訴它要使用什么樣的jdk版本編譯,它就會用maven-compiler-plugin默認(rèn)的jdk版本來處理,這樣就容易出現(xiàn)版本不匹配的問題,這篇文章主要給大家介紹了關(guān)于如何在Maven項目配置pom.xml指定JDK版本和編碼的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • SpringBoot中的自動裝配原理詳解

    SpringBoot中的自動裝配原理詳解

    本文將通過在Spring中集成MyBatis和在SpringBoot中集成MyBatis為大家簡單梳理自動配置過程,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Mybatis第三方PageHelper分頁插件的使用與原理

    Mybatis第三方PageHelper分頁插件的使用與原理

    提到插件相信大家都知道,插件的存在主要是用來改變或者增強(qiáng)原有的功能,MyBatis中也一樣,下面這篇文章主要給大家介紹了關(guān)于Mybatis第三方PageHelper分頁插件的使用與原理,需要的朋友可以參考下
    2022-02-02
  • Java使用阿里云接口進(jìn)行身份證實名認(rèn)證的示例實現(xiàn)

    Java使用阿里云接口進(jìn)行身份證實名認(rèn)證的示例實現(xiàn)

    這篇文章主要介紹了使用阿里云接口進(jìn)行身份證實名認(rèn)證的示例實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java圖像處理工具類

    Java圖像處理工具類

    這里給大家分享了一個java常用的圖像處理工具類,包含縮放圖像、切割圖像、圖像類型轉(zhuǎn)換、彩色轉(zhuǎn)黑白、文字水印、圖片水印等,有需要的小伙伴參考下。
    2015-02-02

最新評論

南汇区| 攀枝花市| 绵阳市| 东莞市| 普陀区| 汉寿县| 固镇县| 浦县| 阿拉尔市| 鹤壁市| 天峻县| 河津市| 静安区| 肇源县| 屏南县| 霍邱县| 湘阴县| 治县。| 鹿邑县| 涡阳县| 和田县| 吐鲁番市| 独山县| 赫章县| 凯里市| 龙井市| 龙海市| 徐汇区| 汶川县| 东阳市| 文化| 镇安县| 筠连县| 辽源市| 银川市| 郎溪县| 黔南| 秭归县| 武邑县| 赤壁市| 太原市|