大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!

Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!

更新時(shí)間:2020-02-27 11:06:34 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3188次


  開發(fā)中經(jīng)常會(huì)遇到各種池(如:連接池,線程池),它們的作用就是為了提高性能及減少開銷,在JDK1.5以后的java.util.concurrent包中內(nèi)置了很多不同使用場(chǎng)景的線程池,為了更好的理解它們,自己手寫一個(gè)線程池,加深印象。


  概述


  1.什么是池


  它的基本思想就是一種對(duì)象池,程序初始化的時(shí)候開辟一塊內(nèi)存空間,里面存放若干個(gè)線程對(duì)象,池中線程執(zhí)行調(diào)度由池管理器來處理。當(dāng)有線程任務(wù)時(shí),從池中取一個(gè),執(zhí)行完成后線程對(duì)象歸池,這樣可以避免反復(fù)創(chuàng)建線程對(duì)象所帶來的性能開銷,節(jié)省系統(tǒng)的資源。


  2.使用線程池的好處


  合理的使用線程池可以重復(fù)利用已創(chuàng)建的線程,這樣就可以減少在創(chuàng)建線程和銷毀線程上花費(fèi)的時(shí)間和資源。并且,線程池在某些情況下還能動(dòng)態(tài)調(diào)整工作線程的數(shù)量,以平衡資源消耗和工作效率。同時(shí)線程池還提供了對(duì)池中工作線程進(jìn)行統(tǒng)一的管理的相關(guān)方法。這樣就相當(dāng)于我們一次創(chuàng)建,就可以多次使用,大量的節(jié)省了系統(tǒng)頻繁的創(chuàng)建和銷毀線程所需要的資源。


Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  包含功能:


  1.創(chuàng)建線程池,銷毀線程池,添加新任務(wù)


  2.沒有任務(wù)進(jìn)入等待,有任務(wù)則處理掉


  3.動(dòng)態(tài)伸縮,擴(kuò)容


  4.拒絕策略


  介紹了線程池的原理以及主要組件之后,就讓我們來手動(dòng)實(shí)現(xiàn)一個(gè)自己的線程池,以加深理解和深入學(xué)習(xí)。因?yàn)樽约簩?shí)現(xiàn)的簡(jiǎn)易版本所以不建議生產(chǎn)中使用,生產(chǎn)中使用java.util.concurrent會(huì)更加健壯和優(yōu)雅。


  代碼


  以下線程池相關(guān)代碼均在SimpleThreadPoolExecutor.java中,由于為了便于解讀因此以代碼塊的形式呈現(xiàn)


  維護(hù)一個(gè)內(nèi)部枚舉類,用來標(biāo)記當(dāng)前任務(wù)線程狀態(tài),在Thread中其實(shí)也有.


      Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  任務(wù)線程具體實(shí)現(xiàn)


  1.繼承Thread,重寫run方法。


  2.this.taskState==TaskState.FREE&&TASK_QUEUE.isEmpty()如果當(dāng)前線程處于空閑狀態(tài)且沒有任何任務(wù)了就將它wait住,讓出CPU執(zhí)行權(quán)


  3.如果有任務(wù)就去執(zhí)行FIFO(先進(jìn)先出)策略


  4.定義close方法,關(guān)閉線程,當(dāng)然這里不能暴力關(guān)閉,所以這里有需要借助interrupt


     Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  簡(jiǎn)易版線程池,主要就是維護(hù)了一個(gè)任務(wù)隊(duì)列和線程集,為了動(dòng)態(tài)擴(kuò)容,自己也繼承了Thread去做監(jiān)聽操作,對(duì)外提供submit()提交執(zhí)行任務(wù)、shutdown()等待所有任務(wù)工作完畢,關(guān)閉線程池


       Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  測(cè)試一把


  創(chuàng)建一個(gè)測(cè)試類


     Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  日志分析:從日志中可以看到,初始化的時(shí)候是2個(gè)線程在工作,執(zhí)行速度較為緩慢,當(dāng)經(jīng)過第一次擴(kuò)容后,會(huì)觀察到線程池里線程個(gè)數(shù)增加了,執(zhí)行任務(wù)的速度就越來越快了,本文一共擴(kuò)容了2次,第一次是擴(kuò)容到activeSize的大小,第二次是擴(kuò)容到maxSize,在執(zhí)行任務(wù)的過程中,當(dāng)線程數(shù)過多的時(shí)候就會(huì)觸發(fā)回收機(jī)制...


     Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!


  總結(jié)


  通過本文,大致可以了解線程池的工作原理和實(shí)現(xiàn)方式,學(xué)習(xí)的過程中,就是要知其然知其所以然。這樣才能更好地駕馭它,更好地去理解和使用,也能更好地幫助我們觸類旁通,后面的文章中會(huì)詳細(xì)介紹java.util.concurrent中的線程池。


      以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java線程池學(xué)習(xí)教程:實(shí)現(xiàn)簡(jiǎn)易線程池!”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


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

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲综合久久综合激情久久 | 亚洲成人一区 | 久久精品综合视频 | 亚洲欧美精品一区 | 特黄特黄一级片 | 成年女人在线观看片免费视频 | 久久成人视 | 综合欧美日韩一区二区三区 | 亚洲天堂爱爱 | 日韩欧美中文字幕出 | 亚洲激情视频网站 | 欧美一级毛片免费大全 | 亚洲国产欧美91 | 成人久久久 | 日韩欧美综合视频 | 奇米影视在线观看 | 国产未成女年一区二区 | 日韩精品视频在线观看免费 | 亚洲国产人成在线观看 | 欧美日韩色| 3d动漫免费一区二区三区 | 午夜国产精品理论片久久影院 | 国产一级视频播放 | 国产无套乱子伦精彩是白视频 | 99精品国产在这里白浆 | 五月婷婷综合激情网 | 成人性色生活片免费网 | a级日本理论片在线播放 | 97精品伊人| 麻豆国产高清精品国在线 | 四虎影视永久免费观看 | 99精品久久99久久久久 | 青青久久精品国产免费看 | 伊人高清 | 99re视频精品全部免费 | 久久一本色道综合 | 久久99综合国产精品亚洲首页 | 91精东果冻蜜桃星空麻豆 | 国产精品久久国产三级国不卡顿 | 日本一级特级毛片视频 | 免费播放欧美毛片欧美aaaaa |