ExecutorService——shutdown方法和awaitTermination方法

ExecutorService的關閉
shutdown和awaitTermination為接口ExecutorService定義的兩個方法,一般情況配合使用來關閉線程池。

方法簡介
shutdown方法:平滑的關閉ExecutorService,當此方法被調用時,ExecutorService停止接收新的任務并且等待已經提交的任務(包含提交正在執行和提交未執行)執行完成。當所有提交任務執行完畢,線程池即被關閉。

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

具體實例
普通任務處理類:

package com.secbro.test.thread;import java.util.concurrent.Callable;/*** @author zhuzhisheng* @Description* @date on 2016/6/1.*/
public class Task implements Callable{@Overridepublic Object call() throws Exception {System.out.println("普通任務");return null;}
}

長時間任務處理類:

package com.secbro.test.thread;import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;/*** @author zhuzhisheng* @Description* @date on 2016/6/1.*/
public class LongTask implements Callable{@Overridepublic Object call() throws Exception {System.out.println("長時間任務");TimeUnit.SECONDS.sleep(5);return null;}
}

測試類:

package com.secbro.test.thread;import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;/*** @author zhuzhisheng* @Description* @date on 2016/6/1.*/
public class TestShutDown {public static void main(String[] args) throws InterruptedException{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)) {System.out.println("線程池沒有關閉");}System.out.println("線程池已經關閉");}}

輸出結果為:

普通任務
普通任務
長時間任務
普通任務
線程池沒有關閉
線程池沒有關閉
線程池沒有關閉
線程池沒有關閉
線程池已經關閉

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281841.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF 簡單模仿 VSCode 界面布局

WPF 簡單模仿 VSCode 界面布局本文經原作者授權以原創方式二次分享,歡迎轉載、分享。WPF 簡單模仿 VSCode 界面布局作者:弈虎-呂女士會翻墻原文鏈接: https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode分享一篇群友這幾天自己寫的 WPF 簡…

compare()方法+使用compare方法

compare()方法 compare(lob1,lob2,amount,offset_1,offset_2) 1用于比較2個lob存儲的數據,比較的方式是從指定偏移量開始,對指定數量的字符或者字節進行比較。 2如果比較內容相同,返回0,否則返回-1或1. 3如果參數設置有誤或不合…

linux 下 mysql默認表_linux環境下mysql默認是區分表名大小寫的

在linux環境下,mysql默認表明是區分大小寫的,我們可以查看全局變量發現:mysql> show variables like lower%;-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_cas…

dot-- 資源匯總

http://graphviz.org/doc/info/attrs.htmlhttp://graphs.grevian.org/http://graphs.grevian.org/examplehttp://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html轉載于:https://www.cnblogs.com/itzxy/p/7860276.html

兩將軍問題和TCP三次握手

兩將軍問題,又被稱為兩將軍悖論、兩軍問題, 是一個經典的計算機思想實驗。首先, 為避免混淆,我們需要認識到兩將軍問題雖然與拜占庭將軍問題相關,但兩者不是一個東西。拜占庭將軍問題是一個更通用的兩將軍問題版本&…

微信小程序開發系列五:微信小程序中如何響應用戶輸入事件

2019獨角獸企業重金招聘Python工程師標準>>> 微信小程序開發系列教程 微信小程序開發系列一:微信小程序的申請和開發環境的搭建 微信小程序開發系列二:微信小程序的視圖設計 微信小程序開發系列三:微信小程序的調試方法 微信小程序…

理解Object.defineProperty的作用

Object.defineProperty 是vue中雙向綁定的基礎。vue是通過數據劫持的方式來做數據綁定的,最核心的方法是通過 Object.defineProperty()方法來實現對屬性的劫持,達到能監聽到數據的變動。要實現數據的雙向綁定, 當使用存取器描述屬性的特性的時…

java.lang包有哪些類_Java中Lang包的工具類有哪些

Java中Lang包的工具類有哪些發布時間:2020-12-08 16:15:36來源:億速云閱讀:76作者:Leah今天就跟大家聊聊有關Java中Lang包的工具類有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總…

直播修仙:使用.NET 的 WebView2 如何獲取請求的響應內容,以微信直播的互動直播為例...

背景近幾年直播行業快速發展,門檻也越來越低,越來越的人涌入直播大軍。不得不說,直播不僅帶來了更多的娛樂消遣,還提供了一個新型的就業方式。說起直播的類型,有一個非常小眾的娛樂直播,沒有主播&#xff0…

2017年我的閱讀書單

2017年我正在看或者已經看完的書單,基本上都是紙質書,主要是長時間閱讀也不傷眼。由于現階段的主要工作是 DevOps 和運維管理,所以涉及運維方面的書我沒有再細看,如果是工作用到的話會稍為翻閱下。主要還是看運維開發和 Python 及…

web第6次作業position

position 屬性指定了元素的定位類型。 position 屬性的五個值: static (靜態定位) HTML元素的默認值,即沒有定位,元素出現在正常的流中。 靜態定位的元素不會受到 top, bottom, left, right影響。 div.stati…

GeneralUpdate版本更新公告20221009

大家好我是juster,GeneralUpdate的開源項目作者。這次將發布GeneralUpdate兼容.NET MAUI和多平臺為核心的版本。經過國慶假期的打磨修復了大量開源社區開發者的提交的bug和不合理修改建議,重構、刪除了大量代碼和結構使用和上一個版本沒有太大變化。1.更…

實驗2 java_《Java程序設計》實驗2

1、使用java語言編程,從鍵盤輸入N個整數存儲到數組中,求數組所有元素的和、最大值和平均值。import java.util.Scanner;public class Program01{public static void main(String [] args){Scanner scanner new Scanner(System.in);System.out.println(&…

WPF遍歷當前容器中某種控件的方法

原文:WPF遍歷當前容器中某種控件的方法版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/m0_37591671/article/details/79528845 WPF遍歷當前容器中某種控件的方法 WPF遍歷當前容器中某種控件的方法1.目的:2.實現思…

gradle 轉 maven

1. 預備 1.1. java 環境 驗證 java -version   1.2. gradle 安裝, 參考, 這里列舉下windows下的安裝 b.1 下載包:https://gradle.org/releases b.2 解壓,例如放到D:\soft\gradle\gradle-3.5 b.3 添加到環境變量, 把D…

詳細的DedeCMS(織夢)目錄權限安全設置教程

一、目錄權限根據統計,絕大部分網站的攻擊都在根目錄開始的,因此,欄目目錄不能設置在根目錄。DEDECMS部署完成后,重點目錄設置如下:1)將install刪除。2) data、templets、uploads、a或html目錄,…

java證書的安裝_Java 第三方證書安裝

1、進入dos命令行,進入目錄C:\Program Files (x86)\Java\jre6\lib\security,2、導入命令: keytool -import -keystore "C:\Program Files (x86)\Java\jre6\lib\security\cacerts" -storepass changeit -keypass changeit -alias em…

善用Object.defineProperty巧妙找到修改某個變量的準確代碼位置

2019獨角獸企業重金招聘Python工程師標準>>> 我今天的工作又遇到一個難題。前端UI右下角這個按鈕被設置為"禁用(disabled)"狀態。 這個按鈕的可用狀態由屬性enabled控制。我通過調試發現,一旦下圖第88行代碼執行完畢之后,這個按鈕的…

緩沖運動之框架開始一級簡單框架實例

***********************緩沖運動【框架開始】-1.html********************************************* <!DOCTYPE html> <html><head lang"en"><meta charset"UTF-8"><title></title><style type"text/css&qu…

將字符串分割為指定長度的子字符串

將一個字符串從左至右&#xff0c;分割成指定長度的子字符串&#xff08;注&#xff1a;最后一個子字符串的長度不一定等于指定的長度&#xff09; 1 #include <stdio.h>2 #include <string.h>3 4 #define STR_LENGTH 5 //分割之后每個字符串的長度&#xff08;最…