激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

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

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

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

下面小編就為大家?guī)硪黄猨ava中進程與線程_三種實現(xiàn)方式總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一:進程與線程

概述幾乎任何的操作系統(tǒng)都支持運行多個任務(wù),通常一個任務(wù)就是一個程序,而一個程序就是一個進程。當(dāng)一個進程運行時,內(nèi)部可能包括多個順序執(zhí)行流,每個順序執(zhí)行流就是一個線程

進程進程是指處于運行過程中的程序,并且具有一定的獨立功能。進程是系統(tǒng)進行資源分配和調(diào)度的一個單位。當(dāng)程序進入內(nèi)存運行時,即為

進程的三個特點:

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

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

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

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

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

注:

線程:

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

線程的特點:

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

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

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

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

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

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

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

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

② 創(chuàng)建thread類的實例,即創(chuàng)建了線程對象

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

實現(xiàn)步驟:

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

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

③使用futruetask對象作為thread的target創(chuàng)建并啟動新線程

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

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

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品三区视频 | 他也色在线视频 | 日本教室三级在线看 | 日本aⅴ在线 | 国产精品亚洲激情 | 日韩美女电影 | 操操插插 | 中文字幕在线观看网址 | 国产乱一区二区三区视频 | 国产精选久久 | 91女上位 在线播放 性欧美日本 | wwwxxx免费视频| 成人不卡在线观看 | xxxeexxx性国产| 日本精品一区二区 | 欧美日韩1区2区3区 黄片毛片一级 | 欧美成人免费小视频 | 99视频网址| 中文字幕在线观看网址 | 可以看逼的视频 | 免费国产视频在线观看 | 亚洲av一级毛片特黄大片 | 噜噜色av| 久久久久久艹 | 欧美成人免费一级 | av免费入口 | 精品国产91久久久久久浪潮蜜月 | 一级成人黄色片 | 久久久一区二区三区精品 | 成人在线免费观看小视频 | 免费一级毛片在线播放不收费 | 欧美日韩在线视频一区 | 欧美五月婷婷 | 黄色免费播放网站 | 污视频在线免费播放 | 美女污污在线观看 | 一级精品 | 一级裸体视频 | 狠狠干天天操 | 久久久久久久一区二区三区 | 九九热精 |