一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)

2020-11-06 21:10Java之家 Java教程

下面小編就為大家帶來一篇java中進程與線程_三種實現方式總結(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一:進程與線程

概述幾乎任何的操作系統都支持運行多個任務,通常一個任務就是一個程序,而一個程序就是一個進程。當一個進程運行時,內部可能包括多個順序執行流,每個順序執行流就是一個線程

進程進程是指處于運行過程中的程序,并且具有一定的獨立功能。進程是系統進行資源分配和調度的一個單位。當程序進入內存運行時,即為

進程的三個特點:

1:獨立性:進程是系統中獨立存在的實體,它可以獨立擁有資源,每一個進程都有自己獨立的地址空間,沒有進程本身的運行,用戶進程不可以直接訪問其他進程的地址空間。

2:動態性:進程和程序的區別在于進程是動態的,進程中有時間的概念,進程具有自己的生命周期和各種不同的狀態

3:并發性:多個進程可以在單個處理器上并發執行,互不影響

并發性和并行性是不同的概念:并行是指同一時刻,多個命令在多個處理器上同時執行;并發是指在同一時刻,只有一條命令是在處理器上執行的,但多個進程命令被快速輪換執行,使得在宏觀上具有多個進程同時執行的效果

java中進程與線程_三種實現方式總結(必看篇)

注:

線程:

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

線程的特點:

線程可以完成一定任務,可以和其它線程共享父進程的共享變量和部分環境,相互協作來完成任務。

線程是獨立運行的,其不知道進程中是否還有其他線程存在。

線程的執行是搶占式的,也就是說,當前執行的線程隨時可能被掛起,以便運行另一個線程。

一個線程可以創建或撤銷另一個線程,一個進程中的多個線程可以并發執行。

二、線程的創建及使用

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

方案一:繼承thread類創建線程類

步驟:① 定義thread類的子類 并重寫該類的run方法,該run方法的方法體就代表了該線程需要完成的任務

② 創建thread類的實例,即創建了線程對象

③ 調用線程的start方法來啟動線程

java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)java中進程與線程_三種實現方式總結(必看篇)

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

方案二:實現runnable接口

①定義runnable接口的實現類,并重寫它的run方法,run方法同樣是該線程的執行體

創建runnable實現類的實例,并將此實例作為thread的target創建一個thread對象,該thread對象才是真正的線程對象

調用start方法啟動該線程

java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)

結論:采用ruunable接口的方式創建多個線程可以共享線程類的實例變量,這是因為在這種方式下,程序創建的runnable對象只是線程的target,而多個線程可以共享一個target,所以多個線程可以共享一個實例變量

通過runnable實現多線程其實就是將run包裝成線程的執行體,但是目前java無法將任意方法包裝成線程執行體

java中進程與線程_三種實現方式總結(必看篇)java中進程與線程_三種實現方式總結(必看篇)

方案三:使用callable和future創建線程java5開始,java提供 callable接口,callable接口提供了一個call()方法可以作為線程執行體,看起來和runnable很像,但call()方法更強大——call()方法可以有返回值、call()方法可以拋出異常

java5提供了future接口來代表callable接口的call()方法的返回值,并future接口提供了一個futuretask實現類,該實現類實現類future接口,也實現了runnable接口——可以作為thread的target。

實現步驟:

①創建callable接口的實現類,并實現call方法,call方法會成為線程執行體,且call方法具有返回值,在創建callable接口的實現類!

②使用futruetask類來包裝callable對象,futruetask封裝類callable的call方法的返回值

③使用futruetask對象作為thread的target創建并啟動新線程

使用futruetask的get方法獲取執行結束后的返回值

java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)

java中進程與線程_三種實現方式總結(必看篇)

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

以上這篇java中進程與線程_三種實現方式總結(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩综合网 | 青草久久精品亚洲综合专区 | 国产亚洲高清国产拍精品 | 无遮无挡免费视频 | 晓雪老师我要进你里面好爽 | 免费网站看v片在线成人国产系列 | 国产成人精品一区 | 男人捅女人漫画 | 嗯啊好大视频 | 日韩aⅴ在线观看 | 热99re久久精品国产首页 | 欧美日韩一区二区三区免费 | 美女脱一光二净的视频 | 成年视频在线观看免费 | 国产欧美一区二区精品性色 | 爱色综合v | 成人福利| 欧美激情精品久久久久久不卡 | 亚洲 日韩 国产 中文视频 | 午夜dj影院在线视频观看完整 | www.尤物| 99国产小视频 | 日本在线亚州精品视频在线 | 无遮无挡免费视频 | 成年人免费在线看 | 日本不卡免免费观看 | 猫咪社区免费资源在线观看 | 亚洲国产精品久久久久久网站 | h日本漫画全彩在线观看 | 精品国产乱码久久久久久免费流畅 | 乌克兰xxxxx| 性欧美xxxxx护士另类 | 小嫩videos| 2012在线观看免费视频大全 | 日本在线视频网址 | 王淑兰李思雨李铁柱乡村小说免费 | 亚洲同性男男gay1069 | 青青青视频蜜桃一区二区 | 日本高清中文字幕一区二区三区 | 精品国产美女AV久久久久 | 久久精品AV一区二区无码 |