色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 線程池有什么用,創建線程池有幾種方式,你如何選擇?

線程池有什么用,創建線程池有幾種方式,你如何選擇?

來源:千鋒教育
發布人:qyf
時間: 2022-06-07 17:35:00 1654594500

java培訓

  我們先來了解了解線程池怎么來的,知其所來,方能知其所往,根據摩爾定律所說:集成電路上可容納的晶體管數量每 18 個月翻一番,因此 CPU 上的晶體管數量會越來越多。

  但隨著時間的推移,集成電路上可容納的晶體管數量已趨向飽和,摩爾定律也漸漸失效,因此多核 CPU 逐漸變為主流,與之相對應的多線程編程也開始變得普及和流行起來,這當然也是很久之前的事了,對于現在而言多線程編程已經成為程序員必備的職業技能了,那接下來我們就來聊聊“線程池”這個多線程編程中最重要的話題,我們先來講講線程池的概念,然后說他的優點,那么他有什么用你必然也就知道了。

  什么是線程池?

  線程池(ThreadPool)是一種基于池化思想管理和使用線程的機制。它是將多個線程預先存儲在一個“池子”內,當有任務出現時可以避免重新創建和銷毀線程所帶來性能開銷,只需要從“池子”內取出相應的線程執行對應的任務即可。池化思想在計算機的應用也比較廣泛,比如以下這些:

  · 內存池(Memory Pooling):預先申請內存,提升申請內存速度,減少內存碎片。

  · 連接池(Connection Pooling):預先申請數據庫連接,提升申請連接的速度,降低系統的開銷。

  · 實例池(Object Pooling):循環使用對象,減少資源在初始化和釋放時的昂貴損耗。

  線程池的優勢主要體現在以下4點:

  1. 降低資源消耗:通過池化技術重復利用已創建的線程,降低線程創建和銷毀造成的損耗。

  2. 提高響應速度:任務到達時,無需等待線程創建即可立即執行。

  3. 提高線程的可管理性:線程是稀缺資源,如果無限制創建,不僅會消耗系統資源,還會因為線程的不合理分布導致資源調度失衡,降低系統的穩定性。使用線程池可以進行統一的分配、調優和監控。

  4. 提供更多更強大的功能:線程池具備可拓展性,允許開發人員向其中增加更多的功能。比如延時定時線程池ScheduledThreadPoolExecutor,就允許任務延期執行或定期執行。

  同時我其實建議大家在idea中添加《阿里巴巴java開發手冊》,當然我們也可以下載他電子書看看,其中就寫到,線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

  說明:線程池的好處是減少在創建和銷毀線程上所消耗的時間以及系統資源的開銷,解決資源不足的問題。如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗完內存或者“過度切換”的問題。

  知道了什么是線程池以及為什要用線程池之后,我們再來看怎么用線程池

  線程池的創建總共有7種,但總體類說可分為2類:

  · 一類是通過 ThreadPoolExecutor 創建的線程池;

  · 另一個類是通過 Executors 創建的線程池。

  線程池的創建方式總共包含以下 7 種(其中 6 種是通過 Executors 創建的,1 種是通過 ThreadPoolExecutor 創建的):

  1. Executors.newFixedThreadPool:創建一個固定大小的線程池,可控制并發的線程數,超出的線程會在隊列中等待;

  2. Executors.newCachedThreadPool:創建一個可緩存的線程池,若線程數超過處理所需,緩存一段時間后會回收,若線程數不夠,則新建線程;

  3. Executors.newSingleThreadExecutor:創建單個線程數的線程池,它可以保證先進先出的執行順序;

  4. Executors.newScheduledThreadPool:創建一個可以執行延遲任務的線程池;

  5. Executors.newSingleThreadScheduledExecutor:創建一個單線程的可以執行延遲任務的線程池;

  6. Executors.newWorkStealingPool:創建一個搶占式執行的線程池(任務執行順序不確定)【JDK 1.8 添加】。

  7. ThreadPoolExecutor:最原始的創建線程池的方式,它包含了 7 個參數可供設置,后面會詳細講。(這個是用的最多的,所以參數真有可能問你哦)

  ThreadPoolExecutor 參數介紹:

  參數 1:corePoolSize

  核心線程數,線程池中始終存活的線程數。

  參數 2:maximumPoolSize

  最大線程數,線程池中允許的最大線程數,當線程池的任務隊列滿了之后可以創建的最大線程數。

  參數 3:keepAliveTime

  最大線程數可以存活的時間,當線程中沒有任務執行時,最大線程就會銷毀一部分,最終保持核心線程數量的線程。

  參數 4:unit:

  單位是和參數 3 存活時間配合使用的,合在一起用于設定線程的存活時間 ,參數 keepAliveTime 的時間單位有以下 7 種可選:

  · TimeUnit.DAYS:天

  · TimeUnit.HOURS:小時

  · TimeUnit.MINUTES:分

  · TimeUnit.SECONDS:秒

  · TimeUnit.MILLISECONDS:毫秒

  · TimeUnit.MICROSECONDS:微妙

  · TimeUnit.NANOSECONDS:納秒

  參數 5:workQueue

  一個阻塞隊列,用來存儲線程池等待執行的任務,均為線程安全,它包含以下 7 種類型:

  · ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列。

  · LinkedBlockingQueue:一個由鏈表結構組成的有界阻塞隊列。

  · SynchronousQueue:一個不存儲元素的阻塞隊列,即直接提交給線程不保持它們。

  · PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列。

  · DelayQueue:一個使用優先級隊列實現的無界阻塞隊列,只有在延遲期滿時才能從中提取元素。

  · LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列。與SynchronousQueue類似,還含有非阻塞方法。

  · LinkedBlockingDeque:一個由鏈表結構組成的雙向阻塞隊列。

  較常用的是 LinkedBlockingQueue 和 Synchronous,線程池的排隊策略與 BlockingQueue 有關。

  參數 6:threadFactory

  線程工廠,主要用來創建線程,默認為正常優先級、非守護線程。

  參數 7:handler

  拒絕策略,拒絕處理任務時的策略,系統提供了 4 種可選:

  · AbortPolicy:拒絕并拋出異常。

  · CallerRunsPolicy:使用當前調用的線程來執行此任務。

  · DiscardOldestPolicy:拋棄隊列頭部(最舊)的一個任務,并執行當前任務。

  · DiscardPolicy:忽略并拋棄當前任務。

  默認策略為 AbortPolicy。

  我們講講單線程池的意義:

  從以上可以看出 newSingleThreadExecutor 和 newSingleThreadScheduledExecutor 創建的都是單線程池,那么單線程池的意義是什么呢?

  答:雖然是單線程池,但提供了工作隊列,生命周期管理,工作線程維護等功能。

  線程池的執行流程:

  ThreadPoolExecutor 關鍵節點的執行流程如下:

  · 當線程數小于核心線程數時,創建線程。

  · 當線程數大于等于核心線程數,且任務隊列未滿時,將任務放入任務隊列。

  · 當線程數大于等于核心線程數,且任務隊列已滿:若線程數小于最大線程數,創建線程;若線程數等于最大線程數,拋出異常,拒絕任務。

  線程拒絕策略

  我們來演示一下 ThreadPoolExecutor 的拒絕策略的觸發,我們使用 DiscardPolicy 的拒絕策略,它會忽略并拋棄當前任務的策略

  自定義拒絕策略:

  除了 Java 自身提供的 4 種拒絕策略之外,我們也可以自定義拒絕策略

  你該知道,你該懂的知識都懂了吧,是不是選用哪種線程池你心里有答案了,那我來來說說咱們最后這個問題選用問題:

  我們來看下阿里巴巴《Java開發手冊》給我們的答案:

  【強制要求】線程池不允許使用 Executors 去創建,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。

  說明:Executors 返回的線程池對象的弊端如下:

  1) FixedThreadPool 和 SingleThreadPool:允許的請求隊列長度為 Integer.MAX_VALUE,可能會堆積大量的請求,從而導致 OOM。

  2)CachedThreadPool:允許的創建線程數量為 Integer.MAX_VALUE,可能會創建大量的線程,從而導致 OOM。

  所以綜上情況所述,我們推薦使用 ThreadPoolExecutor 的方式進行線程池的創建,因為這種創建方式更可控,并且更加明確了線程池的運行規則,可以規避一些未知的風險。

  最后多說一句,就一句哈哈,ThreadPoolExecutor 的方式進行線程池的創建,ThreadPoolExecutor 最多可以設置 7 個參數,當然設置 5 個參數也可以正常使用,ThreadPoolExecutor 當任務過多(處理不過來)時提供了 4 種拒絕策略,當然我們也可以自定義拒絕策略,這樣回答我確定你這道題的面試肯定成功了,并且超長發揮了。

  更多關于“java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍
久久综合狠狠综合久久综合88| 国产精品欧美一级免费| 亚洲国产日韩一区二区| 精品综合免费视频观看| 国产欧美一区视频| 欧美在线|欧美| 国产激情一区二区三区| 国产亚洲欧洲997久久综合| 日韩综合一区二区| 精品视频色一区| 一区二区三区四区精品在线视频| 亚洲a一区二区| 日韩欧美视频在线| 午夜视黄欧洲亚洲| 8x福利精品第一导航| 精品久久久网站| 久久综合狠狠综合久久综合88| 国产河南妇女毛片精品久久久| 欧美日韩和欧美的一区二区| 成人毛片在线观看| 日韩欧美精品在线| 成人av电影在线| 中文字幕一区二区日韩精品绯色| va亚洲va日韩不卡在线观看| 国产一区二区三区| 国产欧美一区二区三区沐欲 | 亚洲美腿欧美偷拍| 日韩一区二区在线看片| 欧美日韩国产大片| 在线观看免费一区| 不卡av在线免费观看| 国产清纯白嫩初高生在线观看91| 日产欧产美韩系列久久99| 91美女片黄在线观看91美女| 日韩欧美国产三级电影视频| 国内精品久久久久影院一蜜桃| 3751色影院一区二区三区| 美女视频黄免费的久久| 亚洲精品乱码久久久久久| 91网站在线播放| 久久激情综合网| 一区二区三区高清不卡| 欧美精品aⅴ在线视频| 粉嫩欧美一区二区三区高清影视| 视频一区欧美精品| 亚洲人精品一区| 亚洲卡通欧美制服中文| 久久精品人人做人人综合| 日韩三级高清在线| 337p亚洲精品色噜噜| 欧美午夜不卡视频| 884aa四虎影成人精品一区| 色综合天天综合网天天看片| 高清不卡一二三区| 懂色av一区二区在线播放| 狠狠色丁香婷婷综合久久片| 麻豆精品久久久| 亚洲激情综合网| 国内精品国产成人国产三级粉色 | 欧美午夜视频网站| 99re热视频精品| 99re这里只有精品6| 91福利视频网站| 2014亚洲片线观看视频免费| 亚洲欧洲日韩av| 水蜜桃久久夜色精品一区的特点 | 成人午夜在线免费| 91搞黄在线观看| 久久久蜜桃精品| 青青草国产精品亚洲专区无| 日本韩国一区二区三区视频| 欧美一二三四区在线| 亚洲综合一区二区精品导航| 午夜成人免费电影| 色综合天天做天天爱| 亚洲天堂精品视频| 91小宝寻花一区二区三区| 国产丝袜在线精品| 国产成人自拍网| 中文欧美字幕免费| 国产成人av一区| 最新欧美精品一区二区三区| 成人性生交大片免费看中文| 国产色产综合色产在线视频| 日本大胆欧美人术艺术动态| 国产在线不卡一区| 国产精品拍天天在线| 秋霞午夜av一区二区三区| 精品国产电影一区二区| 国产在线播精品第三| 久久久国产午夜精品| 成人免费黄色在线| 亚洲自拍另类综合| 国产婷婷色一区二区三区| a级高清视频欧美日韩| 亚洲二区在线观看| 国产欧美日韩在线观看| a亚洲天堂av| 九九热在线视频观看这里只有精品| 精品日韩在线一区| 91色porny在线视频| 婷婷国产在线综合| 亚洲激情成人在线| 久久精品男人天堂av| 精品电影一区二区三区| 91久久线看在观草草青青| 国产一区二区三区香蕉| 亚洲综合免费观看高清在线观看| 久久免费的精品国产v∧| 91精品国产综合久久久蜜臀图片| 91在线观看免费视频| 韩国一区二区三区| 国产成人综合网| 处破女av一区二区| 国产超碰在线一区| 成a人片国产精品| 97久久精品人人澡人人爽| 99久久精品一区二区| 一区二区三区日韩欧美精品 | 国产精品视频yy9299一区| 久久蜜桃av一区精品变态类天堂 | 日韩不卡一二三区| 视频一区视频二区中文字幕| 秋霞影院一区二区| 国产最新精品免费| 成人免费毛片app| 在线免费观看视频一区| 日韩亚洲欧美一区| 亚洲免费看黄网站| 青娱乐精品在线视频| 亚洲综合色在线| 国产一区二区三区四区五区美女 | 成人深夜在线观看| 欧美午夜精品免费| 国产欧美日韩综合| 青草国产精品久久久久久| 免费高清视频精品| 成人免费视频一区二区| 欧美日韩和欧美的一区二区| 日韩伦理电影网| 视频在线观看91| 欧美日本视频在线| 亚洲国产色一区| av中文字幕在线不卡| 精品国产乱码久久| 久久国产成人午夜av影院| 精品视频一区三区九区| 怡红院av一区二区三区| 97se亚洲国产综合自在线观| **性色生活片久久毛片| 欧美视频一二三区| 亚洲v中文字幕| 精品毛片乱码1区2区3区| 国产一区亚洲一区| 国产精品美女久久久久久| 色综合中文综合网| 欧美日韩一区二区三区高清 | 日本不卡一区二区| 日韩午夜精品视频| 国产一区二区三区综合| 亚洲最新在线观看| 91精品国产91久久综合桃花| 亚洲欧美一区二区三区久本道91 | 精品一区二区三区久久| 中文字幕一区不卡| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日日摸夜夜添夜夜添国产精品| 亚洲黄色av一区| 久久久久亚洲综合| 一区在线观看免费| 亚洲va中文字幕| 日韩一二三区不卡| 中文字幕欧美国产| 亚洲精品日韩一| 91婷婷韩国欧美一区二区| 欧美日韩视频在线第一区| 天使萌一区二区三区免费观看| 日韩一二三四区| 国产福利精品一区二区| 亚洲一区二区偷拍精品| 国产精品久久久久久久久久久免费看 | 免费观看久久久4p| 91九色最新地址| 六月婷婷色综合| 亚洲成人av一区二区三区| 亚洲同性gay激情无套| 欧美一区二区三区思思人| 成人黄色片在线观看| 国产在线精品视频| 成人激情小说网站| 国产亚洲欧美日韩俺去了| 狠狠狠色丁香婷婷综合激情| 日韩一区和二区| 久久久高清一区二区三区| 精品国精品自拍自在线| youjizz久久| 国产精品综合一区二区三区| 99久久精品国产一区二区三区| 色欧美88888久久久久久影院| 欧美人成免费网站|