精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕日韩av电影| 天天av天天翘天天综合网色鬼国产 | 国产精品视频99| 欧美成人三级在线观看| 成人性生交大片免费看中文视频| 日韩欧美成人精品| 一本—道久久a久久精品蜜桃| 成人久久久精品国产乱码一区二区| 亚洲狼人精品一区二区三区| 日韩在线免费视频| 亚洲男人在线天堂| 中文字幕成人| 一本到高清视频免费精品| dy888午夜| 黄色av免费在线观看| 国产a级毛片一区| 国产精品欧美日韩一区二区| 日本少妇激情舌吻| 91九色精品国产一区二区| 精品呦交小u女在线| 99精品999| 蜜桃成人精品| 精品久久久久久久久久久| 穿情趣内衣被c到高潮视频| 可以在线观看的av网站| 成人亚洲一区二区一| 国产欧美日韩精品专区| 国产91精品一区| 精品福利电影| 美日韩在线视频| 日本成人免费在线观看| 亚洲另类av| 亚洲国产小视频| 国产精品91av| 日韩精品一级| 日韩一区二区三区四区五区六区| 亚洲欧洲日本精品| 日本在线视频一区二区| 欧美性开放视频| av高清在线免费观看| 色婷婷av在线| 樱花影视一区二区| 日韩最新中文字幕| 国产最新在线| 亚洲青青青在线视频| 最近看过的日韩成人| 免费a级毛片在线播放| 国产女人水真多18毛片18精品视频| 久久精品一二三区| 五月婷婷免费视频| 91亚洲精品久久久蜜桃网站| 国产综合av一区二区三区| 日本高清视频免费看| 成人精品电影在线观看| 国产精品12| 全国男人的天堂网| 99re视频精品| 欧美性xxxx69| 成a人v在线播放| 国产精品全国免费观看高清 | 欧美在线高清| 久久久久久这里只有精品| 久青草视频在线观看| 亚洲视频碰碰| 欧美亚洲视频在线看网址| 日韩毛片一区二区三区| 日韩综合小视频| 国产精品欧美风情| japanese国产| 成人黄色在线看| 久久综合色一本| 国产黄在线观看免费观看不卡| 欧美激情在线免费观看| 国产精品夜夜夜爽张柏芝| 在线观看av免费| 五月激情综合网| 成人免费视频久久| 免费一区二区三区四区| 欧美一区二区三区视频免费播放| 成人激情视频小说免费下载| 亚洲精品一区二区二区| 精品中文字幕一区二区小辣椒| 91视频免费在线| 日本美女一级片| 国产偷国产偷亚洲高清人白洁| 亚洲天堂电影网| 欧美极品少妇videossex| 午夜久久久久久久久| 男女啪啪网站视频| 亚洲精品在线a| 亚洲女人被黑人巨大进入al| 91n在线视频| 狠狠爱综合网| 国产精品久久97| 亚洲第一色网站| 久久九九全国免费| 糖心vlog在线免费观看| 欧美大片免费观看网址| 日韩视频免费观看高清在线视频| 三上悠亚ssⅰn939无码播放| 亚洲乱码在线| 国产精品免费一区二区三区都可以 | 国产精品免费一区二区三区观看 | 91精品成人久久| 在线免费看av的网站| 9色porny自拍视频一区二区| 中文字幕剧情在线观看一区| 小视频免费在线观看| 91精品久久久久久蜜臀| 欧美老熟妇乱大交xxxxx| 欧美深夜福利| 91久久久久久久久久久| 伦理片一区二区三区| 亚洲综合视频在线观看| 三上悠亚av一区二区三区| 国产精品毛片视频| 操91在线视频| 伊人免费在线观看| 91论坛在线播放| 黄色一级片黄色| 中文字幕综合| 中文字幕最新精品| 久久精品五月天| 不卡视频一二三| 免费的av在线| 日本中文字幕视频一区| 亚洲欧美中文日韩v在线观看| 日本少妇性生活| 国产高清在线精品| 三级网在线观看| 精品久久毛片| 国产一区二区三区直播精品电影| 九九热在线免费观看| 风流少妇一区二区| 日韩精品手机在线观看| 精品视频一二| 欧美大胆在线视频| 国产成人精品无码高潮| 国产精品理伦片| 亚洲欧美自偷自拍另类| 欧美天天综合| 国产精品久久久| 国产精品99999| 欧美性极品少妇| 免费在线观看a视频| 日韩福利视频网| 台湾成人av| www.26天天久久天堂| 综合网日日天干夜夜久久| 国产99久久久久久免费看| 国产欧美一区二区精品婷婷| 亚洲色图久久久| 99精品国产一区二区三区| 成人福利免费观看| 超碰人人在线| 日韩免费成人网| 日韩精品成人一区| 久久夜色精品一区| 午夜激情在线观看视频| 欧美成人直播| 91亚洲va在线va天堂va国| 亚洲小说区图片区都市| 欧美精品一区二区三区四区| 久久精品国产亚洲av无码娇色| 成人av资源站| 国产淫片av片久久久久久| 日韩精品欧美| 成人av免费在线看| 午夜影院在线播放| 这里精品视频免费| 亚洲av无码一区二区三区性色| 亚洲第一狼人社区| 国产福利短视频| 日韩av一二三| japanese在线播放| 美女精品一区最新中文字幕一区二区三区| 日本成人黄色片| 国产福利在线播放麻豆| 亚洲国产精品专区久久| 国内av在线播放| 亚洲精品ww久久久久久p站| 在线观看国产三级| 麻豆成人av在线| 天堂8在线天堂资源bt| 中文字幕亚洲影视| 国产日韩在线亚洲字幕中文| 激情av在线| 中文字幕av一区| 黄色av免费观看| 欧美色手机在线观看| 国产精品成人av久久| 国产片一区二区| 国产chinesehd精品露脸| 日日夜夜精品视频天天综合网| 好吊色这里只有精品| 欧美国产不卡| 91精品视频免费观看| 中文字幕在线视频网站| 久久久精品久久久久| 日本啊v在线| 日韩精品一区二| 亚洲精品无码久久久久 | 探花视频在线观看| 亚洲精品乱码久久久久久黑人| 极品粉嫩小仙女高潮喷水久久| 美女任你摸久久| 男人和女人啪啪网站| 亚洲一区色图| 污视频在线免费观看一区二区三区| 一区二区视频| 国产一区深夜福利| 婷婷六月国产精品久久不卡| 久久久久久久999| 国产福利在线播放麻豆| 中文字幕亚洲一区二区三区五十路 | 黑人精品一区| 久久久久久久久久久免费精品| 欧美激情办公室videoshd| 亚洲欧美国产高清va在线播| 亚洲免费一级片| 欧美一区二区三区视频免费| 一本色道久久综合熟妇| 91久久精品网| 无码人妻aⅴ一区二区三区有奶水| 一二三区精品视频| 欧美在线视频第一页| 国产精品天干天干在线综合| 黄色正能量网站| 99久久久无码国产精品| 精品国产一二区| 国产suv精品一区二区6| 亚洲国产午夜精品| 久久国产成人午夜av影院| 人妻无码视频一区二区三区| 性伦欧美刺激片在线观看| 国产精品又粗又长| 日韩视频一区| 玩弄中年熟妇正在播放| 99综合视频| 成人毛片视频网站| 亚洲一区二区伦理| 国内外成人免费激情视频| 亚洲一卡二卡| www.国产欧美| 欧美日韩亚洲综合| 性色av一区二区三区四区| 日韩欧美在线免费| 99久久精品国产亚洲| 疯狂蹂躏欧美一区二区精品| 特一级黄色大片| 精品成人乱色一区二区| 国产香蕉视频在线| 日韩欧美999| 黄色污污视频软件| 精品视频在线视频| 国产又粗又猛又爽又黄的| 欧美欧美欧美欧美首页| 亚洲天堂视频在线| 51午夜精品国产| a网站在线观看| 亚洲国产成人av在线| 天堂成人在线观看| 亚洲欧美日韩精品久久| av播放在线| 欧美成人免费观看| 国产99在线观看| 国产成人在线播放| 亚洲精品伦理| 97久草视频| 欧美重口另类| 亚洲一区三区电影在线观看| 欧美粗暴jizz性欧美20| heyzo亚洲| 免费看日韩精品| 久久黄色一级视频| 久久一留热品黄| 天堂资源在线视频| 亚洲午夜精品17c| 中文字幕黄色片| 欧美疯狂做受xxxx富婆| 免费看国产片在线观看| 亚洲丝袜av一区| 欧美理论片在线播放| 青草青草久热精品视频在线网站 | 久久国产精品亚洲人一区二区三区| 中文字幕综合在线观看| 亚洲激情av| 天天综合网日韩| www.欧美精品一二区| 九九九视频在线观看| 亚洲一区二区在线播放相泽| 精品黑人一区二区三区| 日韩欧美激情一区| 国产乱子伦三级在线播放| 欧美尺度大的性做爰视频| 超碰aⅴ人人做人人爽欧美| 92看片淫黄大片欧美看国产片| 欧美日韩导航| 日本xxx免费| 日韩制服丝袜先锋影音| 日本一级大毛片a一 | 精品午夜福利视频| 欧美在线999| 天天综合网在线| 欧美精品在线播放| 国产精品第一国产精品| 精品国产一区二区三区麻豆免费观看完整版 | 天天综合在线观看| 免费中文日韩| 黄色亚洲精品| а 天堂 在线| 亚洲国产成人在线| 国产原创视频在线| 精品美女被调教视频大全网站| 香蕉视频免费在线播放| 国产91精品不卡视频| 国产精品qvod| 日韩视频一二三| 麻豆精品在线观看| 91视频在线网站| 欧美日韩国产综合新一区| 国产黄色一级大片| 久久精品视频亚洲| 国产精成人品2018| 欧美日韩国产免费一区二区三区| 黄色精品免费| 少妇献身老头系列| 尤物在线观看一区| 精品人妻av一区二区三区| 久久精品国产亚洲| 久久婷婷五月综合色丁香| 日韩片电影在线免费观看| 美女精品在线| 黄色aaa视频| 色综合一区二区三区| 手机在线不卡av| 国内精品久久久久久久久| 99久久婷婷国产综合精品青牛牛 | 久久一级免费视频| 欧美自拍丝袜亚洲| 精品一二三区视频| 日韩免费av一区二区| 久久91成人| www日韩视频| 国产视频视频一区| 中国老头性行为xxxx| 在线视频精品一| 久久电影天堂| www国产免费| 丁香桃色午夜亚洲一区二区三区| 久久精品www| 日韩精品一区二区三区在线播放 | 日本精品视频一区二区| 国产精品ⅴa有声小说| 国产精品视频自拍| 97精品国产| 三级黄色片播放| 亚洲香肠在线观看| 手机在线观看毛片| 国产v综合ⅴ日韩v欧美大片 | 日韩中文字在线| 国产精品日韩精品在线播放| 女人床在线观看| 97久久超碰国产精品电影| 天堂网中文字幕| 中文字幕日韩在线视频| 国产一区一区| 麻豆tv在线播放| 国产亚洲欧美在线| 国产精品国产一区二区三区四区 | 精品视频免费在线播放| 国产亚洲福利社区一区| 一级片在线免费观看视频| 欧美成人在线免费| 欧美午夜18电影| 国内外成人免费在线视频| 亚洲免费观看高清完整版在线| 亚洲欧美另类综合| 7777精品视频| 日韩精品首页| 一级黄色免费视频| 欧美制服丝袜第一页| 日本aa在线| 日韩高清国产精品| 国产寡妇亲子伦一区二区| 久久青青草原亚洲av无码麻豆| 久久精品成人欧美大片| 美国成人xxx| 国产成人美女视频| 懂色aⅴ精品一区二区三区蜜月 | 国产69精品99久久久久久宅男| 九一国产精品| 手机看片国产精品| 色嗨嗨av一区二区三区| 日本孕妇大胆孕交无码| 日韩av一区二区三区在线| 国产成人精品三级麻豆| 337p粉嫩色噜噜噜大肥臀| 欧美激情图片区| 日本欧美国产|