色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

java并發(fā)編程專題(一)----線程基礎(chǔ)知識

瀏覽:27日期:2022-08-30 09:32:29

在任何的生產(chǎn)環(huán)境中我們都不可逃避并發(fā)這個問題,多線程作為并發(fā)問題的技術(shù)支持讓我們不得不去了解。這一塊知識就像一個大蛋糕一樣等著我們?nèi)シ窒恚е鴮W(xué)習(xí)的心態(tài),記錄下自己對并發(fā)的認(rèn)識。

1.線程的狀態(tài):

線程狀態(tài)圖:

java并發(fā)編程專題(一)----線程基礎(chǔ)知識

1、新建狀態(tài)(New):新創(chuàng)建了一個線程對象。

2、就緒狀態(tài)(Runnable):線程對象創(chuàng)建后,其他線程調(diào)用了該對象的start()方法。該狀態(tài)的線程位于可運(yùn)行線程池中,變得可運(yùn)行,等待獲取CPU的使用權(quán)。

3、運(yùn)行狀態(tài)(Running):就緒狀態(tài)的線程獲取了CPU,執(zhí)行程序代碼。

4、阻塞狀態(tài)(Blocked):阻塞狀態(tài)是線程因?yàn)槟撤N原因放棄CPU使用權(quán),暫時停止運(yùn)行。直到線程進(jìn)入就緒狀態(tài),才有機(jī)會轉(zhuǎn)到運(yùn)行狀態(tài)。阻塞的情況分三種:

等待阻塞:運(yùn)行的線程執(zhí)行wait()方法,JVM會把該線程放入等待池中。 同步阻塞:運(yùn)行的線程在獲取對象的同步鎖時,若該同步鎖被別的線程占用,則JVM會把該線程放入鎖池中。 其他阻塞:運(yùn)行的線程執(zhí)行sleep()或join()方法,或者發(fā)出了I/O請求時,JVM會把該線程置為阻塞狀態(tài)。當(dāng)sleep()狀態(tài)超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉(zhuǎn)入就緒狀態(tài)。

5、死亡狀態(tài)(Dead):線程執(zhí)行完了或者因異常退出了run()方法,該線程結(jié)束生命周期。

2.線程調(diào)度

2.1、調(diào)整線程優(yōu)先級:

Java線程有優(yōu)先級,優(yōu)先級高的線程會獲得較多的運(yùn)行機(jī)會。Java線程的優(yōu)先級用整數(shù)表示,取值范圍是1~10,Thread類有以下三個靜態(tài)常量:

static int MAX_PRIORITY 線程可以具有的最高優(yōu)先級,取值為10。 static int MIN_PRIORITY 線程可以具有的最低優(yōu)先級,取值為1。 static int NORM_PRIORITY 分配給線程的默認(rèn)優(yōu)先級,取值為5。

Thread類的setPriority()和getPriority()方法分別用來設(shè)置和獲取線程的優(yōu)先級。

每個線程都有默認(rèn)的優(yōu)先級。主線程的默認(rèn)優(yōu)先級為Thread.NORM_PRIORITY。

線程的優(yōu)先級有繼承關(guān)系,比如A線程中創(chuàng)建了B線程,那么B將和A具有相同的優(yōu)先級。

JVM提供了10個線程優(yōu)先級,但與常見的操作系統(tǒng)都不能很好的映射。如果希望程序能移植到各個操作系統(tǒng)中,應(yīng)該僅僅使用Thread類有以下三個靜態(tài)常量作為優(yōu)先級,這樣能保證同樣的優(yōu)先級采用了同樣的調(diào)度方式。

3.線程基本方法使用說明:

-線程睡眠:Thread.sleep(long millis),使線程轉(zhuǎn)到阻塞狀態(tài)。millis參數(shù)設(shè)定睡眠的時間,以毫秒為單位。當(dāng)睡眠結(jié)束后,就轉(zhuǎn)為就緒(Runnable)狀態(tài)。sleep()平臺移植性好。 -線程等待:Object類中的wait(),導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對象的 notify() 方法或 notifyAll() 喚醒方法。這個兩個喚醒方法也是Object類中的方法,行為等價于調(diào)用 wait(0) 一樣。 -線程讓步:Thread.yield() ,暫停當(dāng)前正在執(zhí)行的線程對象,把執(zhí)行機(jī)會讓給相同或者更高優(yōu)先級的線程。 -線程加入:join(),等待其他線程終止。在當(dāng)前線程中調(diào)用另一個線程的join()方法,則當(dāng)前線程轉(zhuǎn)入阻塞狀態(tài),直到另一個進(jìn)程運(yùn)行結(jié)束,當(dāng)前線程再由阻塞轉(zhuǎn)為就緒狀態(tài)。 -線程喚醒:Object類中的notify()方法,喚醒在此對象監(jiān)視器上等待的單個線程。如果所有線程都在此對象上等待,則會選擇喚醒其中一個線程。選擇是任意性的,并在對實(shí)現(xiàn)做出決定時發(fā)生。線程通過調(diào)用其中一個 wait 方法,在對象的監(jiān)視器上等待。 直到當(dāng)前的線程放棄此對象上的鎖定,才能繼續(xù)執(zhí)行被喚醒的線程。被喚醒的線程將以常規(guī)方式與在該對象上主動同步的其他所有線程進(jìn)行競爭;例如,喚醒的線程在作為鎖定此對象的下一個線程方面沒有可靠的特權(quán)或劣勢。類似的方法還有一個notifyAll(),喚醒在此對象監(jiān)視器上等待的所有線程。

注意:Thread中suspend()和resume()兩個方法在JDK1.5中已經(jīng)廢除,不再介紹。因?yàn)橛兴梨i傾向。

Java 中的線程可以分為守護(hù)線程(Daemon Thread) 和用戶線程( User Thread) 。用戶線程會阻止JVM 的正常停止,即JVM 正常停止前應(yīng)用程序中的所有用戶線程必須先停止完畢,否則JVM 無法停止。而守護(hù)線程則不會影響JVM 的正常停止,即應(yīng)用程序中有守護(hù)線程在運(yùn)行也不影響JVM 的正常停止。因此,守護(hù)線程通常用于執(zhí)行一些重要性不是很高的任務(wù),例如用于監(jiān)視其他線程的運(yùn)行情況。

以上就是java并發(fā)編程專題(一)——線程基礎(chǔ)知識的詳細(xì)內(nèi)容,更多關(guān)于JAVA 線程基礎(chǔ)知識的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产一区在线看 | 国产美女视频做爰 | 久久亚洲精品成人 | 欧美美女视频网站 | 看片亚洲 | 爱逼综合网| 国产亚洲欧美成人久久片 | 亚洲综合久久久久久888 | 免费观看成年人网站 | 成人合集大片bd高清在线观看 | 欧美同性videos在线可播放 | 中文字幕亚洲区 | 国产手机精品一区二区 | 国产一区亚洲二区三区 | 男女乱配视频免费观看 | 久久久婷 | 国产美女白丝袜精品_a不卡 | 黄网在线视频 | 日本人成在线视频免费播放 | 91九色精品国产免费 | 怡红院免费全部视频在线视频 | 日本在线毛片视频免费看 | 久草久| 鲁丝片一区二区三区免费 | 久久香焦 | 亚洲精品第一第二区 | 欧美日韩在线观看一区 | 欧美成人性生活视频 | 玖玖精品在线视频 | 香蕉福利久久福利久久香蕉 | 亚洲精品成人av在线 | 国产亚洲一区二区在线观看 | 91免费网站在线看入口黄 | 日韩精品中文字幕在线观看 | 国产九九视频在线观看 | 看真人一级毛片 | 午夜性福 | 97高清国语自产拍中国大陆 | 日韩在线不卡一区在线观看 | 巴西一级毛片 | 一级一级一片免费高清 |