執行緒池關閉的姿勢

2022-09-04 23:06:13 字數 663 閱讀 2771

shutdown方法:平滑的關閉executorservice,當此方法被呼叫時,executorservice停止接收新的任務並且等待已經提交的任務(包含提交正在執行和提交未執行)執行完成。當所有提交任務執行完畢,執行緒池即被關閉。

awaittermination方法:接收人timeout和timeunit兩個引數,用於設定超時時間及單位。當等待超過設定時間時,會監測executorservice是否已經關閉,若關閉則返回true,否則返回false。一般情況下會和shutdown方法組合使用。

scheduledexecutorservice service = executors.newscheduledthreadpool(4);

service.submit(new task());

service.submit(new task());

service.submit(new longtask());

service.submit(new task());

關閉執行緒池

service.shutdown();
判斷執行緒池是否關閉

while (!service.awaittermination(1, timeunit.seconds))

正確使用執行緒池的姿勢

提示手動建立執行緒池,效果會更好哦。executorservice fixedthreadpool executors.newfixedthreadpool 10 inspection info 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,這樣的處...

執行緒池 如何正確的關閉執行緒池

在呼叫這個關閉方法時,執行緒池會根據我們配置的拒絕策略來拒絕掉想要進來的執行緒,也就是說吧建立執行執行緒的入口給關閉掉了,直到執行緒池內的所有執行緒都執行完成。在呼叫這個方法完畢之後,並不代表這個執行緒池就真的都停掉了,只能說他不讓其他執行緒進來了,然後等到執行緒池內的執行緒執行完。shutdown...

正確關閉執行緒池

使用10個固定執行緒池建立100個任務 executorservice service executors.newfixedthreadpool 10 for int i 0 i 100 i threadpoolexecutor中關閉執行緒池的方法 shutdown 可以安全地關閉乙個執行緒池,呼叫...