日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java executorser 停止_Java使用ExecutorService来停止线程服务

發布時間:2025/4/16 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java executorser 停止_Java使用ExecutorService来停止线程服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用ExecutorService來停止線程服務

之前的文章中我們提到了ExecutorService可以使用shutdown和shutdownNow來關閉。

這兩種關閉的區別在于各自的安全性和響應性。shutdownNow強行關閉速度更快,但是風險也更大,因為任務可能正在執行的過程中被結束了。而shutdown正常關閉雖然速度比較慢,但是卻更安全,因為它一直等到隊列中的所有任務都執行完畢之后才關閉。

使用shutdown

我們先看一個使用shutdown的例子:

public void useShutdown() throws InterruptedException {

ExecutorService executor = Executors.newFixedThreadPool(10);

Runnable runnableTask = () -> {

try {

TimeUnit.MILLISECONDS.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

};

executor.submit(runnableTask);

executor.shutdown();

executor.awaitTermination(800, TimeUnit.MILLISECONDS);

}

awaitTermination將會阻塞直到所有正在執行的任務完成,或者達到指定的timeout時間。

使用shutdownNow

當通過shutdownNow來強行關閉ExecutorService是, 它會嘗試取消正在執行的任務,并返回所有已經提交但是還沒有開始的任務。從而可以將這些任務保存起來,以便以后進行處理。

但是這樣我們只知道了還沒有開始執行的任務,對于那些已經開始執行但是沒有執行完畢卻被取消的任務我們無法獲取。

我們看下如何獲得開始執行但是還沒有執行完畢的任務:

public class TrackingExecutor extends AbstractExecutorService {

private final ExecutorService executorService;

private final Set taskCancelledAtShutdown= Collections.synchronizedSet(new HashSet());

public TrackingExecutor(ExecutorService executorService){

this.executorService=executorService;

}

@Override

public void shutdown() {

executorService.shutdown();

}

@Override

public List shutdownNow() {

return executorService.shutdownNow();

}

@Override

public boolean isShutdown() {

return executorService.isShutdown();

}

@Override

public boolean isTerminated() {

return executorService.isTerminated();

}

@Override

public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {

return executorService.awaitTermination(timeout,unit);

}

@Override

public void execute(Runnable command) {

executorService.execute(() -> {

try {

command.run();

}finally {

if(isShutdown() && Thread.currentThread().isInterrupted()){

taskCancelledAtShutdown.add(command);

}

}

});

}

public List getCancelledTask(){

if(! executorService.isTerminated()){

throw new IllegalStateException("executorService is not terminated");

}

return new ArrayList<>(taskCancelledAtShutdown);

}

}

上面的例子中我們構建了一個新的ExecutorService,他傳入一個ExecutorService,并對其進行封裝。

我們重寫了execute方法,在執行完畢判斷該任務是否被中斷,如果被中斷則將其添加到CancelledTask列表中。

并提供一個getCancelledTask方法來返回未執行完畢的任務。

我們看下怎么使用:

public void useShutdownNow() throws InterruptedException {

TrackingExecutor trackingExecutor=new TrackingExecutor(Executors.newCachedThreadPool());

Runnable runnableTask = () -> {

try {

TimeUnit.MILLISECONDS.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

};

trackingExecutor.submit(runnableTask);

List notrunList=trackingExecutor.shutdownNow();

if(trackingExecutor.awaitTermination(800, TimeUnit.SECONDS)){

List runButCancelledList= trackingExecutor.getCancelledTask();

}

}

trackingExecutor.shutdownNow()返回的是未執行的任務。而trackingExecutor.getCancelledTask()返回的是被取消的任務。

上面的任務其實還有一個缺點,因為我們在存儲被取消的任務列表的額時候taskCancelledAtShutdown.add(command),因為之前的判斷不是原子操作,則可能會產生誤報。

到此這篇關于Java使用ExecutorService來停止線程服務的文章就介紹到這了,更多相關Java ExecutorService停止線程內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的java executorser 停止_Java使用ExecutorService来停止线程服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码人妻一区二区在线 | 露脸丨91丨九色露脸 | 成人羞羞免费 | 日韩成人一区二区三区 | 亚洲精品91在线 | 综合网天天| 欧美久久久久久久久久 | 女人囗交吞精囗述 | 欧美四区 | 一级黄色大片视频 | 亚洲欧美一区二区三区孕妇 | 午夜不卡av | 一级黄色在线 | 能在线观看的av | 欧美视频一区二区在线 | 超清av在线 | 成人av手机在线 | 日韩黄色免费电影 | 日本老熟妇毛茸茸 | 自拍偷拍精品 | 天天射综合 | 欧美在线一区二区 | 日韩啪啪网站 | 黄色应用在线观看 | 国产精品福利网站 | 欧美一区二区最爽乱淫视频免费看 | 8090av| 国产三区四区视频 | 国产69精品久久久 | 日韩一级影片 | 依依成人综合网 | 国产一区二区三区久久 | 91视频大全 | 亚洲国产清纯 | h片观看| 国产福利一区二区三区在线观看 | 午夜一级片| 亚洲欧美高清视频 | 牛牛影视一区二区三区 | 51精品 | 男生看的污网站 | 亚洲一二三区在线观看 | 神马午夜dy888 | 91精品国产一区二区在线观看 | 欧美一级二级三级视频 | 欧美一区二区福利 | 色播亚洲| 免费成人福利视频 | 国产v综合v亚洲欧美久久 | 欧美人妻一区二区三区 | 亚洲欧美日韩偷拍 | 九九综合 | 天天干天天插天天操 | 九月婷婷综合 | 亚洲av综合永久无码精品天堂 | 国产女人精品视频 | 国产成人精品a视频一区 | 在线观看免费视频一区 | 在线播放亚洲精品 | 午夜久久久久久久久久影院 | 小蝌蚪视频色 | 国产suv精品一区二区60 | 天堂一区在线 | 人操人爽 | 91亚洲国产成人精品一区二区三 | 成人在线a| 国产精品videossex久久发布 | 亚洲二区在线播放视频 | 国产黄色网络 | 免费黄色在线视频 | 狠狠天天 | 欧美乱码精品一区二区 | 希岛婚前侵犯中文字幕在线 | 中文有码一区 | 欧美日韩色视频 | 99精品久久久久久中文字幕 | 99在线小视频| 欧美99视频 | 精品国产精品国产偷麻豆 | 俄罗斯厕所偷拍 | 中文在线a天堂 | 亚洲精品一区中文字幕乱码 | 日视频| 米奇狠狠干 | 天堂www中文在线资源 | 91视频毛片 | 在线免费观看小视频 | 肥臀熟女一区二区三区 | 国产一级片麻豆 | 久热网 | 一区二区三区免费观看 | 欧美在线91 | 久草手机在线 | julia一区二区三区中文字幕 | 天天网综合 | 免费黄色小说视频 | 国产黄片毛片 | 国产成人短视频在线观看 | 国产50页|