精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試被問線程池,真香

開發 前端
說到并發編程,怎么少的了線程池,在阿里線程池使用場景非常多,用好線程池這個利器也算是日常開發必須掌握的了,下面講講2019年的那一夜,就線程池和某位面試官鏖戰了半個小時。

[[380809]]

本文轉載自微信公眾號「安琪拉的博客」,作者安琪拉的博客 。轉載本文請聯系安琪拉的博客公眾號。

這篇是并發編程系列文章第五篇了,說到并發編程,怎么少的了線程池,在阿里線程池使用場景非常多,用好線程池這個利器也算是日常開發必須掌握的了,下面講講2019年的那一夜,就線程池和某位面試官鏖戰了半個小時。

面試官 : 看你簡歷上寫了對系統性能做了優化,能簡單給我介紹一下嗎?都有哪些優化,你是怎么衡量優化效果的?

我 : 巴拉巴拉。。。例如我們系統之前要查詢用戶的個人身份信息、聯系人信息、訂單狀態信息、積分信息,之前系統是單線程串行處理的,我用線程池對四個任務并行處理,然后對處理結果合并。

面試官 : 你剛才說用到線程池,能跟我講講為什么用線程池嗎?我創建四個線程處理可不可以?

我 : 可以,當然可以。

我 : 但是用線程池更合適。阿里巴巴開發規約中有一條:

3.【強制】線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

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

《阿里巴巴研發手冊》

我 : 就像你去餐廳吃飯,服務員總是提前洗好盤子,不會等你來打飯的時候才洗盤子,盤子就像是線程池里的線程,你打飯就是要處理的任務。

面試官 : 那你知道線程池的相關類關系嗎?

我: 這算什么問題?不應該是問我核心線程數怎么設置嗎?好吧。。。請看下圖:

  • Executor 的定義非常簡單,就定義了線程池最本質要做的事,執行任務。
  1. public interface Executor { 
  2.  
  3.     void execute(Runnable command); 
  • ExecutorService 也是個接口,不過他算是把線程池的框架搭出來了,告訴要實現它的線程池必須提供的一些管理線程池的方法。
  • AbstractExecutorService 是普通的線程池執行器,ScheduledExecutorService 是定時任務線程池。

面試官 : 那你日常開發中是怎么創建線程池的?

我: 我用ThreadPoolExecutor 自定義創建線程池。

面試官 : 那你知道線程池都有哪些核心參數嗎?

我: 線程池主要的核心參數有7個,我們看 ThreadPoolExecutor 構造函數就知道了

  • corePoolSize :核心線程數
  • maximumPoolSize: 最大線程數
  • keepAliveTime :線程在線程池中不被銷毀的空閑時間,如果線程池的線程太多,任務比較小,到這個時間就銷毀線程池。
  • unit : keepAliveTime 的時間單位,一般設置成秒或毫秒。
  • workQueue : 任務隊列,存放等待執行的任務
  • threadFactory: 創建線程的任務工廠,比如給線程命名加上前綴,后面會講
  • handler : 拒絕任務處理器,當任務處理不過來時的拒絕處理器
  • allowCoreThreadTimeOut : 是否允許核心線程超時銷毀,這個參數不在構造函數中,但重要性也很高

面試官 : 老實說,你是不是來之前背過了,不然怎么可能都記住了。

我: [掀桌子],不面了,還找什么工作,要什么自行車。

我不過是來之前把“安琪拉的博客”公眾號上的文章都看了個遍。

面試官 : 其實剛才那也是問題,考察面試者是否皮實,我們繼續。。

面試官 : 剛才說了這些核心參數,你能不能跟我講講線程池的基本工作原理。

我: 可以的,這里我給你畫個流程,如下所示:

面試官 : 那按照上面的流程寫段偽代碼。

我: 還能不能好好面了,讓手撕線程池。

那好吧,你對著的流程圖看,代碼如下:

面試官 : 不錯,那你平常怎么管理線程池的呢?

我: 我會搞了個線程池管理器,比如 ThreadPoolManager,有個私有變量的Map,按照線程池的作用給他取個名字,比如起名為: preparePlateThreadPool (準備餐盤線程池),把線程池名稱定義成常量,和創建好的線程池放到管理器的Map里。

面試官 : 除了你自己用 ThreadPoolExecutor 創建線程池,還有別的方式嗎?

我: java.util.concurrent 包里提供的 Executors 也可以用來創建線程池。

面試官 : Executors 定義了哪幾種 ?

我:

  • newSingleThreadExecutos 單線程線程池,也就是線程池只有一個任務,這個我偶爾用一用
  • newFixedThreadPool(int nThreads) 固定大小線程的線程池
  • newCachedThreadPool() 無界線程池,這個就是無論多少任務,都創建線程來運行,所以隊列相當于沒用。

面試官 : 你上面講日常開發自己 用 ThreadPoolExecutor 創建線程池,為什么不用Executors 提供的。

我: 第一是 Executors 提供的線程池使用場景很有限,一般場景很難用到,第二他們也都是通過 ThreadPoolExecutor 創建的線程池,我直接用 ThreadPoolExecutor 創建線程池,可以理解原理,靈活度更高。

參考阿里開發手冊規約:

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

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

1)FixedThreadPool和SingleThreadPool:

  • 允許的請求隊列長度為Integer.MAX_VALUE,可能會堆積大量的請求,從而導致OOM。

2)CachedThreadPool:

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

《阿里巴巴研發手冊》

面試官 : 前面你代碼里有任務入隊的操作,你一般自定義線程池,用的什么隊列?

我: 這個要看實際應用的。

  • 有的任務在早上8點和晚上6點都是高峰期,因此有任務尖刺,用 LinkedBlockingQueue, 這個是無界隊列,不限制任務大小的。
  • 對于重要性沒那么高,非強依賴的任務用的ArrayBlockingQueue,這個是指定大小的,如果任務超出,會創建非核心線程執行任務。

面試官 : 那你怎么保證任務隊列的可用性呢?

我: 分幾個方面:

  1. 我的線程池管理器,會有一個定時任務,定時檢測Map 中線程池當前任務隊列的狀態,會設置一個 waterThreshold(水位線),超出水位線會有告警;
  2. 日常大促演練,會對線程池做壓測,如果發生超水位情況,還會對線程按線程名做降級,動態調整核心線程數和隊列,當然還有限流、降級等其他有段保障。

面試官 : 那你怎么合理拆分線程池,核心任務數和任務隊列大小的呢?

我: 這個是個老生常談的問題。

【推薦】 了解每個服務大致的平均耗時,可以通過獨立線程池配置,將較慢的服務與主線程池隔離開,不致于各服務線程同歸于盡。

《阿里巴巴研發手冊》

  • 按照任務的類型,對任務做拆分,分成不同的線程池,分別命名;
  • 區分任務的類型,是CPU密集型還是IO密集型,CPU 可以設置約為CPU核心數,上下文切換少,io密集型可以設置的大一些。
  • 大體估算一個,然后做壓測,評估,另外線程池有個變量也可以參考意義:largestPoolSize,線程池達到過的最大線程任務,比如你剛開始可以把線程數設置的足夠大,壓測過后看這個參數達到的最大數值,同時參考系統的性能指標,cou、io、mem等。

這里還有個公式借鑒:最佳線程數目 = ((線程等待時間+線程CPU時間)/線程CPU時間 )* CPU數目

也有開源的輔助測算線程池的合理線程數。

面試官 : 那拒絕策略呢?了解嗎

我: 拒絕策略就是當任務太多,超過maximumPoolSize了,只能拒絕。

面試官 : 詳細講講

我: 拒絕的時候可以指定拒絕策略,也可以自己實現,JDK默認提供了四種拒絕策略.

  • AbortPolicy

默認拒絕策略, 直接拋RejectedExecutionException

  • DiscardPolicy

任務直接丟棄,不拋出異常

  • CallerRunsPolicy

由調用者來執行被拒絕的任務,比如主線程調用線程池的submit提交任務,但是任務被拒絕,則主線程直接執行。

但是線程池如果已經被關閉了,任務就被丟棄了。

  1. public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  2. //線程池沒關閉 
  3. if (!e.isShutdown()) { 
  4. //直接run,沒有讓線程池來執行 
  5.   r.run(); 
  • DiscardOldestPolicy

丟棄隊列里等的最久的任務,然后嘗試執行被拒絕的任務。

但是線程池如果已經被關閉了,任務就被丟棄了

  1. public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  2. if (!e.isShutdown()) { 
  3.   //丟棄隊列頭部任務 
  4.   e.getQueue().poll(); 
  5.   //線程池嘗試執行任務 
  6.   e.execute(r); 
  7. 面試官 :  那這幾種拒 

面試官 : 那這幾種拒絕策略,你選哪一種?

我: 我選拒絕回答

面試官 : 我選你回去等通知。

到年底了,螞蟻現在有些崗位放出來,有挑戰的業務場景,6位數QPS,流程加快,拿完年終,過完年直接來上班,這個點競爭壓力小。

不管想不想來都可以來找我聊聊,我的微信: guofu-angela。

 

責任編輯:武曉燕 來源: 安琪拉的博客
相關推薦

2020-02-18 14:25:51

Java線程池拒絕策略

2024-01-12 10:05:32

線程池代碼

2022-03-22 09:20:57

應用線程池技術

2023-08-15 15:33:29

線程池線程數

2025-04-23 08:10:00

2023-12-18 08:03:56

并發編程Java

2021-04-13 10:41:25

Redis內存數據庫

2023-01-29 08:04:24

線程池非核心線程任務

2021-06-03 14:23:57

線程線程池JAVA

2021-06-01 10:49:22

線程池Java開發

2019-12-19 09:23:45

Java多線程數據

2024-04-02 09:45:27

線程池Executors開發

2023-09-26 08:36:31

ES6 模塊JS 題目

2022-03-02 07:36:37

池化技術Java線程池

2024-09-09 15:09:30

2024-03-11 18:18:58

項目Spring線程池

2025-09-24 17:05:02

2023-10-17 16:30:00

TCP

2020-09-16 12:29:03

線程池任務函數

2021-07-21 09:15:27

MySQL數據庫面試
點贊
收藏

51CTO技術棧公眾號

校园春色亚洲| 亚洲h视频在线观看| 国产精品羞羞答答在线观看| 日韩欧美亚洲成人| 日韩精品不卡| 97人妻精品一区二区三区动漫| 久久中文字幕av一区二区不卡| 欧美日韩成人综合天天影院| 草草草视频在线观看| 五月天婷婷在线观看| 日韩va亚洲va欧美va久久| 日韩视频在线免费| 亚洲精品第二页| 朝桐光一区二区| 亚洲女女做受ⅹxx高潮| 国内一区二区三区在线视频| 日韩精品中文字| 亚洲欧美99| 国产夫妻在线观看| 香蕉久久夜色精品| 精品国产区一区二区三区在线观看| 制服.丝袜.亚洲.中文.综合懂| 校园春色亚洲| 亚洲精品中文在线观看| 久久99精品久久久久久三级 | 北条麻妃一二三区| 可以免费看不卡的av网站| 久久亚洲一区二区三区四区五区高| 理论片大全免费理伦片| 国产精品黄色片| 午夜视频在线观看一区二区三区| 亚洲v日韩v欧美v综合| 丰满熟妇人妻中文字幕| 久久99久久99| 欧洲亚洲免费视频| 久久亚洲国产成人精品性色| 日本久久精品| 亚洲精品自在久久| 无码国产精品一区二区免费式直播 | 国产又爽又黄免费软件| 亚洲wwww| 亚洲男女视频在线观看| 亚洲影院一区二区三区| 粉嫩的18在线观看极品精品| 在线中文字幕一区二区| 国产一区二区三区小说| 福利在线视频网站| 欧美国产一区二区| 久久精品二区| 日韩中文字幕观看| 国产大陆精品国产| 91人成网站www| 中国黄色一级视频| 视频精品一区二区| 欧美亚洲国产视频小说| 国产一级在线播放| 摸摸摸bbb毛毛毛片| 成年人黄色大片在线| 亚洲欧美另类在线| 一本一道久久a久久精品综合| 欧美色18zzzzxxxxx| 不卡免费追剧大全电视剧网站| 91亚洲人电影| 中文字幕在线网址| 麻豆久久一区二区| 国产精品久久久久一区二区| 五月天激情四射| 国产一区二区三区久久久久久久久| 欧美黄色性视频| 精品亚洲永久免费| 好吊日精品视频| 欧美激情视频一区二区| 久久久香蕉视频| 尤物在线精品| 国精产品一区一区三区有限在线| 国产在线视频99| 亚洲国内自拍| 欧美一级淫片丝袜脚交| 久久青青草原亚洲av无码麻豆| 国产一区白浆| 国产成人精品一区二区在线| 免费无码国产精品| 蜜臀久久99精品久久久久宅男 | 亚洲黄色一区| 午夜剧场成人观在线视频免费观看| 免看一级a毛片一片成人不卡| 欧美激情麻豆| 性欧美亚洲xxxx乳在线观看| 日韩三级av在线| 亚洲欧美日本视频在线观看| 国产成人精品电影| 国产精品毛片一区二区在线看舒淇| 精品夜夜嗨av一区二区三区| 99精彩视频在线观看免费| 成人小说亚洲一区二区三区| 97精品超碰一区二区三区| 欧美主播一区二区三区美女 久久精品人| 国产在线超碰| 亚洲欧美色综合| 大伊香蕉精品视频在线| 伊人色综合一区二区三区影院视频| 一本色道久久综合狠狠躁的推荐| 在线观看免费黄网站| 久久国产精品免费一区二区三区| 日韩精品资源二区在线| 亚洲国产无码精品| 国产精品99久久| 久久久久久中文字幕| 黄色一级视频免费看| 黄色精品一二区| 国产综合av一区二区三区| 成人精品一区二区三区免费| 亚洲欧美色一区| 欧美性大战久久久久xxx| 日韩成人在线电影| 亚洲韩国青草视频| 国产麻豆a毛片| 99pao成人国产永久免费视频| 国产成人亚洲精品| 精品久久无码中文字幕| 国产亚洲一区二区三区在线观看| 蜜臀av.com| 成人爽a毛片免费啪啪| 欧美一区二区三区男人的天堂| 四季av综合网站| 希岛爱理av一区二区三区| 午夜美女久久久久爽久久| 在线观看亚洲一区二区| 99久久国产免费看| 99视频精品全部免费看| 日韩高清不卡| 亚洲黄色在线看| 久久久久久久久久网站| 老牛嫩草一区二区三区日本| 91视频99| 在线激情免费视频| 色综合色狠狠综合色| www.黄色网| 日韩成人精品一区二区| 国产91对白在线播放| www.香蕉视频| 中文字幕视频一区| 欧美伦理片在线看| 天堂成人娱乐在线视频免费播放网站| 久久综合88中文色鬼| 最近中文字幕在线观看| 久久午夜老司机| 日本福利视频一区| 午夜久久av| 久久精品国产精品| 亚洲一区二区人妻| 亚洲国产经典视频| www.日日操| 窝窝社区一区二区| 91精品国产亚洲| 风流少妇一区二区三区91| 亚洲精品中文在线观看| 肉色超薄丝袜脚交| 亚洲成av人电影| 成人国产在线激情| 免费成人黄色| 91精品国产综合久久精品| 精品人妻伦九区久久aaa片| 男女激情视频一区| 一区二区三区精品国产| 精品久久久网| www国产91| 国产精品久久久久久久久毛片 | 成人一区而且| 国产精品视频一| a天堂中文在线88| 欧美性感一区二区三区| 国产精品成人在线视频| 免费观看久久久4p| 一区二区三区四区欧美日韩| 性欧美video另类hd尤物| 日韩精品中文字幕第1页| 亚洲视频在线播放| 国产精品成人无码| 中文字幕巨乱亚洲| 日韩成人精品视频在线观看| 91精品国偷自产在线电影| 91在线视频精品| 白白色在线观看| 国产视频综合在线| 国产精品传媒在线观看| 最新久久zyz资源站| 精品人妻一区二区三| 亚洲国产网站| 日韩av不卡播放| 青娱乐极品盛宴一区二区| 成人97在线观看视频| 嫩草影院一区二区| 在线观看免费亚洲| 日本一级二级视频| av在线播放一区二区三区| www.日日操| 一区二区三区四区电影| 黑人另类av| 四虎影视成人精品国库在线观看| 欧美精品在线免费观看| 四虎影视精品成人| 制服丝袜亚洲色图| 999这里只有精品| 国产精品另类一区| 日本50路肥熟bbw| 日本中文字幕不卡| 久草视频这里只有精品| 成人av国产| 国产精品二区三区四区| 亚洲a∨精品一区二区三区导航| 毛片精品免费在线观看| 三级av在线| 91麻豆精品国产| 三级视频在线观看| 亚洲乱码精品一二三四区日韩在线| 中文乱码人妻一区二区三区视频| 免费高清不卡av| 国产自产在线视频| 99精品美女| 久久久久欧美| 久久久久久久久久久久电影| 欧洲亚洲免费在线| 激情在线视频播放| 色哟哟入口国产精品| 欧美 日韩 国产 成人 在线| 6080国产精品一区二区| www.com亚洲| 天天综合网天天综合色| 搜索黄色一级片| 久久久久99精品国产片| 美女伦理水蜜桃4| 激情欧美日韩一区二区| 99精品免费在线观看| 欧美日韩精选| 97超碰人人爱| 日韩在线不卡| 免费一区二区三区| 加勒比视频一区| 亚洲影院高清在线| 在线免费成人| 国产精品自产拍高潮在线观看| 午夜裸体女人视频网站在线观看| 欧美成人高清视频| caoporm免费视频在线| 日韩一区视频在线| 91在线视频免费看| 国产一区二区三区视频免费| 日韩av地址| 日韩精品在线第一页| 懂色av一区二区三区四区| 日韩欧美中文一区二区| 国产婷婷在线视频| 欧美一级一区二区| 中文字幕一区二区三区四区视频| 91久久精品国产91性色tv| 久久99国产综合精品免费| 欧美日韩激情网| 在线观看日韩中文字幕| 欧美日韩在线影院| 欧美一区二区三区不卡视频| 精品国产福利视频| 毛片视频网站在线观看| 欧美日韩国产一区在线| 午夜毛片在线观看| 色噜噜狠狠成人中文综合| 欧美超碰在线观看| 日本韩国欧美三级| 亚洲天天综合网| 欧美精品自拍偷拍动漫精品| 亚洲一区二区人妻| 日韩欧美久久一区| 人妻妺妺窝人体色www聚色窝| 精品国产一区二区三区忘忧草| 高h震动喷水双性1v1| 亚洲激情在线观看视频免费| 头脑特工队2免费完整版在线观看| 日韩风俗一区 二区| 精品久久av| 日韩中文字幕在线视频播放| h片在线播放| 性色av一区二区三区红粉影视| 黄在线观看免费网站ktv| 青草成人免费视频| 福利一区二区| 国产精品va在线| 国产精品亚洲欧美一级在线| 国产精品久久亚洲7777| 亚洲涩涩av| 一区二区不卡在线观看| 欧美精品一级| 能在线观看的av| 久久超碰97中文字幕| 精品人妻二区中文字幕| 2020国产精品自拍| 精品伦精品一区二区三区视频密桃| 亚洲欧美乱综合| 美日韩一二三区| 欧美日韩精品一区二区| 精品国产伦一区二区三区| 日韩成人av网址| 日本中文字幕视频在线| 欧美精品久久久久久久免费观看| 樱花草涩涩www在线播放| 国产欧美一区二区三区久久人妖| 日韩欧美中文字幕在线视频 | 成人免费毛片嘿嘿连载视频| 偷拍夫妻性生活| 亚洲欧美日韩国产成人精品影院| 日本在线视频免费| 欧美日韩日日夜夜| 天堂网在线播放| 色妞欧美日韩在线| 天堂网在线最新版www中文网| 国产欧美日韩高清| 久久久久观看| 精品久久免费观看| 美女日韩在线中文字幕| 国产老头和老头xxxx×| 国产日本欧洲亚洲| 国产精品50页| 欧美二区三区91| 国产在线观看网站| 午夜精品一区二区三区av| 色噜噜成人av在线| 日本成人三级| 亚洲国产一区二区三区a毛片| 中文av字幕在线观看| 久久免费偷拍视频| 精品在线视频观看| 在线不卡中文字幕| www.av在线| 日韩免费观看网站| 精品午夜电影| 亚洲天堂第一区| 麻豆高清免费国产一区| 美女爆乳18禁www久久久久久| 午夜在线成人av| 国产av一区二区三区精品| 综合久久五月天| 91超碰碰碰碰久久久久久综合| 久久精品五月婷婷| 精品动漫3d一区二区三区免费版| 久久精品久久99| 国产精品伦理一区二区| 这里只有精品国产| 亚洲日本中文字幕免费在线不卡| www视频在线观看| 国产精品久久一区二区三区| 亚洲午夜黄色| 午夜性福利视频| 一区二区三区精品视频在线| 99久久精品无免国产免费| www.xxxx精品| 日韩一级视频| 午夜啪啪免费视频| 久久国产生活片100| 少妇高潮惨叫久久久久| 欧美日韩综合在线| av网站在线免费观看| 国产精品国产福利国产秒拍 | 亚洲视频小说| 免费黄网站欧美| 婷婷综合在线视频| 欧美视频中文字幕| 五月天婷婷在线视频| 国产欧美日韩高清| 午夜精品毛片| 一区二区三区人妻| 一区二区三区成人在线视频| 亚洲精品国产av| 性欧美在线看片a免费观看| 丝袜av一区| 男人天堂成人在线| 中文字幕一区免费在线观看| 国产熟女一区二区三区五月婷| 欧美国产日韩免费| 国产成人精品亚洲线观看| 3d动漫一区二区三区| 久久色在线视频| www.欧美色| www.久久久久久.com| 日韩高清一区| 亚洲美免无码中文字幕在线| 久久久精品黄色| 91九色蝌蚪91por成人| 欧美高清视频在线观看| 久久99精品国产自在现线| www.com毛片| 中文字幕乱码久久午夜不卡| 国产裸体无遮挡| 91精品国产免费久久久久久 | 欧美一级日韩一级| 91超碰在线免费| 日韩女优中文字幕| 国产成人福利片| 黄色片中文字幕| 久久影院在线观看| 美女网站色精品尤物极品姐弟| 午夜激情在线观看视频|