真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java多線程概念知識(shí)點(diǎn)有哪些

這篇文章主要介紹“Java多線程概念知識(shí)點(diǎn)有哪些”,在日常操作中,相信很多人在Java多線程概念知識(shí)點(diǎn)有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java多線程概念知識(shí)點(diǎn)有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站負(fù)責(zé)任的成都網(wǎng)站制作公司!

線程安全:

通過(guò)加鎖保證數(shù)據(jù)的一致性.也就是說(shuō)當(dāng)一個(gè)線程訪問(wèn)某個(gè)數(shù)據(jù)時(shí),通過(guò)加鎖操作對(duì)數(shù)據(jù)進(jìn)行保護(hù),其它線程在加鎖期間不能對(duì)其訪問(wèn)

線程封閉

當(dāng)多個(gè)線程訪問(wèn)共享變量時(shí),需要通過(guò)加鎖來(lái)保證數(shù)據(jù)同步,增加了程序的復(fù)雜性. 避免數(shù)據(jù)同步的一種方式是不共享變量,比如使用局部變量和ThreadLocal

線程調(diào)度

系統(tǒng)為線程分配CUP使用權(quán)的過(guò)程

  • 協(xié)同式線程調(diào)度

線程的執(zhí)行時(shí)間由線程自己控制,當(dāng)自己執(zhí)行完后,主動(dòng)通知操作系統(tǒng)切換到另外一個(gè)線程上執(zhí)行. 好處是實(shí)現(xiàn)簡(jiǎn)單,線程對(duì)自己的操作是可知道的,沒(méi)有什么線程同步問(wèn)題.缺點(diǎn)是線程執(zhí)行時(shí)間不可控,如果一個(gè)線程有問(wèn)題,可能會(huì)一致阻塞在那里.

  • 搶占式線程調(diào)度

每個(gè)線程的執(zhí)行時(shí)間有操作系統(tǒng)分配,線程的切換不由線程本身決定(Java中,Thread.yield()可以讓出執(zhí)行時(shí)間,但無(wú)法獲取執(zhí)行時(shí)間)線程執(zhí)行時(shí)間系統(tǒng)可控,也不會(huì)有一個(gè)線程導(dǎo)致進(jìn)程阻塞.

java線程調(diào)度就是搶占式調(diào)度

可以通過(guò)設(shè)置線程的優(yōu)先級(jí)讓一些線程盡可能的先執(zhí)行多執(zhí)行(Java一共有10個(gè)線程優(yōu)先級(jí)從Thread.MIN_PRIORITY至Thread.MAX_PRIORITY),在兩個(gè)線程同時(shí)處于ready時(shí),優(yōu)先級(jí)越高越容易被執(zhí)行.但優(yōu)先級(jí)并不靠譜,因?yàn)镴ava線程時(shí)通過(guò)映射到原生線程來(lái)實(shí)現(xiàn)的,所以線程調(diào)度還是取決于操作系統(tǒng).

狀態(tài)轉(zhuǎn)換

  • 新建(New)創(chuàng)建后尚未啟動(dòng)的線程

  • 運(yùn)行(Runnable):Runnable包括操作系統(tǒng)中的Running和Ready. 處于此狀態(tài)的線程有可能在運(yùn)行,也有可能在等待CPU為它分配執(zhí)行時(shí)間.線程創(chuàng)建后,其它線程調(diào)用了該線程的start方法,那么該線程就位于可運(yùn)行線程池中,變得可運(yùn)行,就差CPU分配執(zhí)行時(shí)間,其它運(yùn)行所需要的資源都已經(jīng)獲得.

  • 無(wú)限期等待(Waiting):該狀態(tài)下的線程不會(huì)被分配CPU執(zhí)行時(shí)間,要等待被其它線程進(jìn)行顯示喚醒. 如沒(méi)有設(shè)置timeout的Object.wait()方法和Thread.join()方法,以及LockSupport.park()方法

  • 限時(shí)等待(Timed Waiting):該狀態(tài)下的線程不會(huì)被分配CPU執(zhí)行時(shí)間,只不過(guò)不需要被顯示的喚醒,在一定時(shí)間后會(huì)被系統(tǒng)自動(dòng)喚醒. 如Thread.sleep(),設(shè)置了timeout的Object.wait()和Thread.join(),LockSupport.parkNanos()以及LockSupport.parkUntil()方法

  • 阻塞(Blocked):線程被阻塞了,與等待的區(qū)別是:阻塞線程在等待一個(gè)排它鎖.

阻塞狀態(tài)是因?yàn)槟撤N原因放棄CPU使用權(quán),暫時(shí)停止執(zhí)行,直到線程進(jìn)入就緒狀態(tài),才有機(jī)會(huì)轉(zhuǎn)到運(yùn)行狀態(tài).

  • 結(jié)束(Terminated):線程執(zhí)行完了或者異常退出了run()方法,該線程結(jié)束生命周期

阻塞常見的三種情況

1.等待阻塞(無(wú)限期等待):運(yùn)行的線程執(zhí)行wait()方法,該線程會(huì)釋放占用的資源,JVM會(huì)把該線程放入等待池.進(jìn)入這個(gè)狀態(tài)后,線程不會(huì)自動(dòng)喚醒,必須依靠其它線程調(diào)用notify()或notifyAll()方法才能會(huì)被喚醒.

2.同步阻塞:運(yùn)行的線程在獲取對(duì)象的同步鎖時(shí),若該同步鎖被其它線程占用,則JVM會(huì)把該線程放入鎖池. 3.其它阻塞(限時(shí)等待):運(yùn)行的線程執(zhí)行了join()或者sleep()方法,或者發(fā)起了I/O請(qǐng)求,JVM會(huì)把該線程置為阻塞狀態(tài),當(dāng)sleep()狀態(tài)超時(shí),join()等待線程終止或者超時(shí),I/O處理完成,該線程重新轉(zhuǎn)入就緒狀態(tài).

到此,關(guān)于“Java多線程概念知識(shí)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


分享題目:Java多線程概念知識(shí)點(diǎn)有哪些
網(wǎng)站地址:http://weahome.cn/article/gohdhg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部