黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java培訓(xùn) Java線程培訓(xùn):Java線程內(nèi)容詳解

Java線程培訓(xùn):Java線程內(nèi)容詳解

更新時(shí)間:2020-08-07 16:02:48 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2367次

一:概念

了解線程,得先了解進(jìn)程。

進(jìn)程:是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。

線程:是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。

關(guān)系:簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。進(jìn)程和線程的主要差別在于他們是不同的操作系統(tǒng)資源管理方式。

二.創(chuàng)建線程

2.1:設(shè)計(jì)一個(gè)繼承java.lang.Thread的子類,覆蓋Thread類的run方法。

2.2:設(shè)計(jì)一個(gè)實(shí)現(xiàn)Runnable接口的類,實(shí)現(xiàn)它的run方法。

啟動(dòng)線程:調(diào)用start()方法

運(yùn)行線程:調(diào)用run()方法

三:線程之間的狀態(tài)

3.1:創(chuàng)建狀態(tài):使用new運(yùn)算符創(chuàng)建一個(gè)線程后,該線程處于創(chuàng)建狀態(tài)。

3.2:就緒狀態(tài):用start()方法啟動(dòng)一個(gè)線程后,系統(tǒng)為該線程分配除處理機(jī)外的所有資源,線程就進(jìn)入就緒隊(duì)列排隊(duì),等待處理機(jī)制調(diào)度。

3.3:運(yùn)行狀態(tài):輪到線程占用CPU資源時(shí),JVM將CPU使用權(quán)切換給該線程,該線程就可以開始自己的生命周期。

3.4:阻塞狀態(tài):正在運(yùn)行的線程讓出CPU使用權(quán),JVM將CPU資源切換給其它線程。阻塞主要有休眠阻塞、等待阻塞、互斥阻塞和其它阻塞等。

3.5:死亡狀態(tài):線程運(yùn)行結(jié)束后進(jìn)入死亡狀態(tài)。

四:線程的兩個(gè)特性

多個(gè)線程之間是不能直接傳遞數(shù)據(jù)交互的,它們之間的交互只能通過共享變量來實(shí)現(xiàn)。

線程共享變量的過程:在多個(gè)線程之間共享了Count類的一個(gè)對(duì)象,這個(gè)對(duì)象是被創(chuàng)建在主內(nèi)存(堆內(nèi)存)中,每個(gè)線程都有自己的工作內(nèi)存(線程棧)。操作共享對(duì)象時(shí),首先從主內(nèi)存復(fù)制Count對(duì)象到工作內(nèi)存中,修改Count對(duì)象,最后用工作內(nèi)存Count刷新主內(nèi)存Count。

4.1:可見性

當(dāng)一個(gè)對(duì)象在工作內(nèi)存中都存在副本,一但一個(gè)線程修改了共享變量,其他線程能看見修改后的值。

4.2:有效性

多個(gè)線程執(zhí)行時(shí),CPU的調(diào)度是隨機(jī)的。保證線程有序的執(zhí)行,這就是有效性。

五:線程的同步機(jī)制

5.1:synchronized

每個(gè)鎖對(duì)象都有兩個(gè)隊(duì)列,分別為就緒隊(duì)列,阻塞隊(duì)列。

就緒隊(duì)列存放了將要獲得鎖的線程,阻塞隊(duì)列存放了被阻塞的線程,當(dāng)一個(gè)線程被喚醒后,才會(huì)進(jìn)入就緒隊(duì)列,等待CPU的調(diào)度,反之,進(jìn)入阻塞隊(duì)列,等待被喚醒。

一個(gè)線程執(zhí)行互斥代碼過程如下:

1.獲得同步鎖;

2.清空工作內(nèi)存;

3.從主內(nèi)存拷貝對(duì)象副本到工作內(nèi)存;

4.執(zhí)行代碼(計(jì)算或者輸出等);

5.刷新主內(nèi)存數(shù)據(jù);

6.釋放同步鎖。

5.2:volatile

一個(gè)變量可以被volatile修飾,在這種情況下內(nèi)存模型(主內(nèi)存和線程工作內(nèi)存)確保所有線程可以看到一致的變量值

六:線程池

池的最終目的都是節(jié)約資源,以更小的開銷做更多的事情,從而提高性能。

創(chuàng)建線程池的方式有四種:

6.1.創(chuàng)建一個(gè)可重用固定線程集合的線程池,以共享的無界隊(duì)列方式來運(yùn)行這些線程。

ExecutorService threadPool=Executors.newFixedThreadPool(3);

創(chuàng)建了一個(gè)固定大小的線程池,容量為3,在FixedThreadPool中,有一個(gè)固定大小的池,如果當(dāng)前需要執(zhí)行的任務(wù)超過了池大小,那么多于的任務(wù)等待狀態(tài),直到有空閑下來的線程執(zhí)行任務(wù),而當(dāng)執(zhí)行的任務(wù)小于池大小,空閑的線程也不會(huì)去銷毀。

6.2.創(chuàng)建一個(gè)可根據(jù)需要?jiǎng)?chuàng)建新線程的線程池,但是在以前構(gòu)造的線程可用時(shí)將重用它們。

ExecutorService threadPool=Executors.newCachedThreadPool();//線程池的大小會(huì)根據(jù)執(zhí)行的任務(wù)數(shù)動(dòng)態(tài)分配

CachedThreadPool會(huì)創(chuàng)建一個(gè)緩存區(qū),將初始化的線程緩存起來,如果線程有可用的,就使用之前創(chuàng)建好的線程,如果沒有可用的,就新創(chuàng)建線程。

6.3.創(chuàng)建一個(gè)使用單個(gè)worker線程的Executor,以無界隊(duì)列方式來運(yùn)行該線程。

ExecutorService threadPool=Executors.newSingleThreadExecutor();

SingleThreadExecutor得到的是一個(gè)單個(gè)的線程,這個(gè)線程會(huì)保證你的任務(wù)執(zhí)行完成,如果當(dāng)前線程意外終止,會(huì)創(chuàng)建一個(gè)新線程繼續(xù)執(zhí)行任務(wù),這和我們直接創(chuàng)建線程不同,也和newFixedThreadPool(1)不同。

6.4.創(chuàng)建一個(gè)可安排在給定延遲后運(yùn)行命令或者定期地執(zhí)行的線程池。

ScheduledExecutorService threadPool=Executors.newScheduledThreadPool(3);

ScheduledThreadPool可以定時(shí)的或延時(shí)的執(zhí)行任務(wù)。

七:鎖對(duì)象Lock

Lock是java.util.concurrent.locks包下的接口,Lock實(shí)現(xiàn)提供了比使用synchronized方法和語句可獲得的更廣泛的鎖定操作,它能以更優(yōu)雅的方式處理線程同步問題.

與synchronized不同:

用sychronized修飾的方法或者語句塊在代碼執(zhí)行完之后鎖自動(dòng)釋放,而用Lock需要我們手動(dòng)釋放鎖,所以為了保證鎖最終被釋放(發(fā)生異常情況),要把互斥區(qū)放在try內(nèi),釋放鎖放在finally內(nèi)。

Java線程培訓(xùn)

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java線程培訓(xùn):Java線程內(nèi)容詳解”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久香蕉网 | 国产精品视频福利一区二区 | 日本黄色大片免费观看 | 曰批全过程免费视频播放网站 | 成人在线视频免费观看 | 天天艹日日干 | 午夜视频免费在线观看 | 国产片一级aaa毛片视频 | 爆操极品美女 | 99在线视频播放 | 国产一区中文字幕在线观看 | 大学生一级毛片全黄真人 | 国产女人伦码一区二区三区不卡 | 欧美日韩视频在线第一区二区三区 | 综合精品视频 | 日韩亚洲人成网站在线播放 | 久在草视频 | 日日干狠狠 | 日日舔夜夜操 | 欧美一级va在线视频免费播放 | 波多野结衣视频在线免费观看 | 亚洲国产成人久久综合一 | 波多野衣结在线精品二区 | 欧洲1区二区三区二页 | 视频h在线 | 丰满寡妇一级毛片 | 99视频在线精品免费观看18 | 日韩片在线观看 | 亚洲视频在线观看不卡 | 天天怕夜夜怕狠狠怕 | 亚洲精品免费在线视频 | 国内自拍成人网在线视频 | 亚洲国产片高清在线观看 | 韩国理伦片在线理伦韩国 | 一级特黄a视频 | 亚洲十八 | 国产精品一区二区三区高清在线 | 激情视频亚洲 | 亚洲国产一区二区三区青草影视 | 午夜h| 色香蕉在线观看网站 |