簡單的執行緒池,一句話概括「執行緒都從池子裡拿」

2021-10-17 14:47:41 字數 1983 閱讀 9475

1、降低資源消耗,重複使用已經建立好的執行緒來減少建立和關閉執行緒造成的消耗

2、提高響應速度,不需要建立執行緒,直接就可以呼叫執行緒來執行任務

3、執行緒統一管理,分配,調優和監控

1、核心執行緒數:允許同時執行的執行緒數

2、最大執行緒數:包含核心執行緒數,最多同時存在的執行緒數,多餘的執行緒等待核心執行緒執行完後,繼續執行

4、時間單位:控制最大空閒時間

5、任務佇列:如果核心執行緒數用完了,再有任務提交到執行緒池中時,會先加到任務佇列中,如果任務佇列都存不下的時候,才會繼續建立執行緒,直到達到最大執行緒數就不再建立執行緒

6、執行緒工廠:允許使用者使用自己建立的執行緒

7、飽和處理機制:當最大執行緒數量也滿了,還有其他執行緒加入的情況下,會使用到飽和處理機制。

客戶a(任務)去銀行(執行緒池)辦理業務,但銀行剛開始營業,視窗服務員未上崗(相當於執行緒池中沒有執行緒),於是經理安排1號員工招待客戶a(建立執行緒執行任務)

在客戶a業務還沒辦完的時候,客戶b就來了,於是經理安排2號工作人員處理客戶b的需求(建立兩個核心執行緒),此時假設銀行中只有兩個核心執行緒(核心執行緒數量是2)

a,b兩個客戶的任務還沒執行完,客戶c就來了,於是經理讓客戶c去大廳坐著(任務佇列中等待);

此時客戶d也來了,任務佇列中的任務數也滿了,經理看視窗(核心執行緒)和大廳(任務佇列)中的客戶(任務)都滿了,就又安排了臨時工3號員工(最大執行緒數)來處理d的任務

又來了乙個客戶e,此時最大執行緒數,核心執行緒,大廳都滿了,拒接客戶e(飽和機制)

客戶都走了,臨時工和視窗的員工都閒下來了,超過了乙個小時,於是經理讓臨時工下班了(銷毀執行緒),但是核心執行緒即使沒活了也得保持在工作崗位

1、shutdown():執行該方法後,拒絕之後加入任務,但會執行完之前的任務

2、shutdownnow():停止所有正在執行的任務,並且返回所有中途停止的任務

3、submit(callble task):執行乙個帶返回值的任務,返回乙個future物件

futuresubmit = executorservice.submit(new callable() 

return i;

}});

object o = submit.get();

system.out.println(o); // 10

4、submit(runnable task):提交任務

5、submit(runnable task,t result):執行runnable任務,返回乙個t result 型別的future物件

6、execute():執行runnable任務,沒有返回值

6、future物件:

等待執行緒執行結果

get():獲取返回的值

cancel():取消任務

iscancelled():任務是否正常取消

isdone():任務是否正常完成

建立乙個可空閒60秒的執行緒池物件,執行緒60秒會自動銷毀,沒有核心執行緒

建立乙個固定執行緒數的執行緒池,不會銷毀

建立乙個只有乙個執行緒的執行緒池

建立乙個可延遲執行或者可定時執行的執行緒池

方法1: schedule(runnble , delay, timeunit): delay時間後執行

方法2: schedule(runnble , delay, timeunit): delay時間後執行

方法3: scheduleatfixedrate(runnable,5l,2,timeunit.seconds);  5秒後,每2秒執行一次任務,不論任務是否執行完都會到時間執行

方法5: schedulewithfixeddelay(runnable,5l,2,timeunit.seconds);  5秒後,每2秒執行一次任務,等待任務執行完後才會進行下次定時                             

建立乙個搶占式的執行緒池

一句話概括

概念 主題中的區域 規劃下您的站點布局吧 開始做 之前先規劃下吧,但是常常規劃完還是要改的。農場的位址,指南和地圖 農場啥時候開門,營業時間 農場的歷史 商列表 每個 商的詳細資訊 能搜尋菜譜 每個菜的詳細資訊 最近新增的菜譜列表 第二步 哪些資訊該放在哪個頁面,或者活該放在哪個型別的頁面 所有頁面...

mysql 匯出一句話 MySQL 匯出一句話

drop table if exists temp 如果存在temp就刪掉 create table temp cmd text not null 建立temp表,裡面就乙個cmd欄位 insert into temp cmd values php eval post cmd 把一句話木馬插入到te...

一句話提醒

1 在c 中,父窗體要訪問子窗體變數,需將子窗體變數設為public才能訪問。2 每 5 秒重新整理頁面 5 秒後重定向頁面 3 block 此元素將顯示為塊級元素,此元素前後會帶有換行符。inline 預設。此元素會被顯示為內聯元素,元素前後沒有換行符。4 document.getelementb...