細說執行緒池–中級篇

  • 2019 年 12 月 25 日
  • 筆記

執行緒池的實現原理分析

執行緒池的基本使用我們都清楚了,接下來我們來了解一下執行緒池的實現原理ThreadPoolExecutor是執行緒池的核心,提供了執行緒池的實現。ScheduledThreadPoolExecutor繼承了 ThreadPoolExecutor,並另外提供一些調度方法以支援定時和周期任務。

Executers 是工具類,主要用來創建執行緒池對象我們把一個任務提交給執行緒池去處理的時候,執行緒池的處理過程是什麼樣的呢?首先直接來看看定義

執行緒池流程圖

關注點在於execute方法,然後我們可以使用一個流程圖來描述,整個執行緒池的整體狀況:

執行緒池原理分析( newFixedThreadPool)

執行緒池就在生活中

小工廠生產汽車零件

工廠–執行緒池

正式員工—核心執行緒數

臨時員工—-最大執行緒數-核心執行緒數

工位或者場地—硬體資源

工廠生產汽車的零件,正常情況下,正式員工是能完成零件的生產,但是由於生意火爆,需要生產更多的零件,這是工廠就把接到的單存放起來,讓正式員工加班加點的干,但是發現存放的單實在是太多了,這時候就得請臨時工入場幫忙生產零件,解決那麼存放的零件單。臨時工人數也不能太多了,因為工廠場地有限(工位有限)。如果正式員工和臨時工一起加班加點的生產,還是跟不上接到的零件單,對不起,我工廠真的無能為力,這時候工廠就得採取拒絕策略。

人力外包

當今社會上,很多人力外包的,比如說:人工客服。雖然現在也流行起人工智慧客服,但是人力外包依然存在。

A公司請了10個客服,專門用來解決用戶遇到的問題和投訴的。正常情況下,10個客服能應對所有客戶的問題和投訴,但是一旦某個產品出問題較多,這時候10個客服就明顯忙不過來了,但是還是能應付的,只是很多時候不能及時回復客戶。禍不單行,這段時間用戶使用的系統老是掛掉,產品不行+系統不穩定。導致客戶收到回饋明顯延遲的太久,這時候,A公司領導覺得請臨時工來幫忙解決問題,因為A公司只能容納下15個客服,但是15個完全是不能解決問題的,這時候就得採取拒絕了,回饋說我這邊已經處理不了太多問題了。