先附上學習鏈結(需要的時候自己也可以看)
今天簡單看了執行緒池,就突然感覺各種帶 「池」 字的都差不多乙個道理,像記憶體池,資料庫連線池。。
簡單描述一下,乙個池子,有個最佳容量和乙個最大容量,開始沒有執行緒。
有任務過來時,看看池子到沒到最佳容量,到了去外面排隊(隊伍數量有限制),
排隊可能有兩種情況,隊伍沒滿,你排隊;隊伍滿了,看看池子到沒到最大容量,沒到就給你執行緒,到了丟擲異常。
你幹完活把執行緒還給池子。池子的執行緒穩定在最佳容量。
再簡單來說,就是你去吃九宮格火鍋(鍋就是執行緒池),每個小格仔是乙個執行緒,每個魚丸是乙個任務(假設乙個格仔只能放乙個魚丸),服務員拿過來魚丸,如果格仔沒滿,你可以放到格仔裡,如果格仔滿了,魚丸就要在盤子裡等,等某個魚丸熟了,撈出去然後放進去盤子前段的第乙個魚丸。
執行緒復用就是每個格仔就在那裡,你不煮魚丸,也不會把它銷毀。
控制最大併發數,就是只有9個格仔,多了沒地方放。
ps:四種執行緒池:
1.newcachedthreadpool
2.newfixedthreadpool
3.newsinglethreadpool
4.newschedulethreadpool
關於執行緒池的理解
corepoolsize,maximumpoolsize 執行緒中永許活動的最大執行緒數 workqueue 任務佇列 time,rejectedexecutionhandler 拒絕策略 1.小於corepoolsize就會新起 2.大於corepoolsize 新增的先加入到workqueue中...
c 11 執行緒池系列之一 最簡單的執行緒池
執行緒池最簡單的形式是含有乙個固定數量的工作執行緒來處理任務,典型的數量是std thread hardware concurrency 當有任務要處理時,呼叫乙個函式將任務放到等待佇列中。每個工作執行緒都是從該佇列中取出任務,執行完任務後繼續從等待佇列取出更多的任務來處理。在最簡單的情況,沒有辦法...
關於Tomcat的執行緒池的理解
預設配置下,tomcat 會為每個聯結器建立乙個繫結的執行緒池 最大執行緒數 200 在大多數情況下你不需要改這個配置 除非增大最大執行緒數以滿足高負載需要 但是 tomcat 喜歡在每個工作者執行緒的 thread local 上下文快取一些諸如 pagecontext 以及標籤快取的物件。正因如...