executorservice的shutdown方法(Java里ExecutorService里shutdown()是什么意思)

2026-04-16 13:30:01 0

executorservice的shutdown方法(Java里ExecutorService里shutdown()是什么意思)

大家好,今天小编来为大家解答以下的问题,关于executorservice的shutdown方法,Java里ExecutorService里shutdown()是什么意思这个很多人还不知道,现在让我们一起来看看吧!

本文目录

Java里ExecutorService里shutdown()是什么意思

shutdown,执行后不再接收新任务,如果里面有任务,就执行完
shutdownNow,执行后不再接受新任务,如果有等待任务,移出队列;有正在执行的,尝试停止之
==========================
通常shutdown之后调用awaitTermination,作用是:后者会阻塞当前线程,等待剩余任务执行完,然后继续往下执行。如果不适用await,那么shutdown之后,很可能导致剩余任务得不到执行(整个程序退出),或是执行出现异常(某些资源被释放之类)。
==========================
例子,网上来的,懒得动手写:
================
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/*
* Callable 和 Future接口
* Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
* Callable和Runnable有几点不同:
* (1)Callable规定的方法是call(),而Runnable规定的方法是run().
* (2)Callable的任务执行后可返回值(任意类型),而Runnable的任务是不能返回值的。
* (3)call()方法可抛出异常,而run()方法是不能抛出异常的。
* (4)运行Callable任务可拿到一个Future对象,
* Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
* 通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。
*/
public class CallableAndFuture {

/** *//**
* 自定义一个任务类,实现Callable接口
*/
public static class MyCallableClass implements Callable{
// 标志位
private int flag = 0;
public MyCallableClass(int flag){
this.flag = flag;
}
public String call() throws Exception{
if (this.flag == 0){
// 如果flag的值为0,则立即返回
return "flag = 0";
}
if (this.flag == 1){
// 如果flag的值为1,做一个无限循环
try {
while (true) {
System.out.println("looping.");
Thread.sleep(2000);
}
} catch (InterruptedException e) {
System.out.println("Interrupted");
}
return "false";
} else {
// falg不为0或者1,则抛出异常
throw new Exception("Bad flag value!");
}
}
}

public static void main(String args) {
// 定义3个Callable类型的任务
MyCallableClass task1 = new MyCallableClass(0);
MyCallableClass task2 = new MyCallableClass(1);
MyCallableClass task3 = new MyCallableClass(2);

// 创建一个执行任务的服务
ExecutorService es = Executors.newFixedThreadPool(3);
try {
// 提交并执行任务,任务启动时返回了一个 Future对象,
// 如果想得到任务执行的结果或者是异常可对这个Future对象进行操作
Future future1 = es.submit(task1);
// 获得第一个任务的结果,如果调用get方法,当前线程会等待任务执行完毕后才往下执行
System.out.println("task1: " + future1.get());

Future future2 = es.submit(task2);
// 等待5秒后,再停止第二个任务。因为第二个任务进行的是无限循环
Thread.sleep(5000);
System.out.println("task2 cancel: " + future2.cancel(true));

// 获取第三个任务的输出,因为执行第三个任务会引起异常
// 所以下面的语句将引起异常的抛出
Future future3 = es.submit(task3);
System.out.println("task3: " + future3.get());
} catch (Exception e){
System.out.println(e.toString());
}
// 停止任务执行服务
es.shutdownNow();
}
}

ExecutorService对象的shutdown和shutdownNow的区别

可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方法在终止前允许执行以前提交的任务,而 shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务。在终止时,执行程序没有任务在执行,也没有任务在等待执行,并且无法提交新任务。应该关闭未使用的 ExecutorService 以允许回收其资源。
下列方法分两个阶段关闭 ExecutorService。第一阶段调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务:
Java code?
void shutdownAndAwaitTermination(ExecutorService pool) {
pool.shutdown(); // Disable new tasks from being submitted
try {
// Wait a while for existing tasks to terminate
if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
pool.shutdownNow(); // Cancel currently executing tasks
// Wait a while for tasks to respond to being cancelled
if (!pool.awaitTermination(60, TimeUnit.SECONDS))
System.err.println("Pool did not terminate");
}
} catch (InterruptedException ie) {
// (Re-)Cancel if current thread also interrupted
pool.shutdownNow();
// Preserve interrupt status
Thread.currentThread().interrupt();
}

java增量统计脚本怎么优雅停掉

要优雅地停止Java增量统计脚本,可以考虑以下几种方法:
1、优雅捕获信号:在脚本中添加信号处理机制,例如在主循环中监听某个自定义信号。当接收到信号时,完成当前的统计任务并正常退出。您可以使用Signal类来捕获信号,并在信号处理方法中实现优雅停止的逻辑。
2、使用标志位控制循环:在脚本中使用一个标志位控制主循环的执行。当需要停止脚本时,通过设置该标志位来使循环结束,然后完成当前的统计任务并正常退出。这要求您的代码中有一个合适的地方来检查标志位并决定是否继续执行循环。
3、使用线程池和ExecutorService:如果您的脚本是基于多线程执行的,可以使用Java的线程池和ExecutorService来控制任务的执行。当需要停止脚本时,调用ExecutorService的shutdown()方法,然后等待所有任务完成后再退出。您还可以使用shutdownNow()方法尝试取消正在执行的任务。
4、使用定时器和TimerTask:如果您的脚本需要按照一定时间间隔执行增量统计任务,可以使用Java的定时器和TimerTask。当需要停止脚本时,调用定时器的cancel()方法来取消定时任务,并完成当前的统计任务后正常退出。

关于executorservice的shutdown方法到此分享完毕,希望能帮助到您。

executorservice的shutdown方法(Java里ExecutorService里shutdown()是什么意思)

本文编辑:admin

更多文章:


title是什么意思?抬头和title有关系吗

title是什么意思?抬头和title有关系吗

本篇文章给大家谈谈title,以及title是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录title是什么意思抬头和title有关系吗英语caption和title都当【标题】的意思的区别editplus怎么写汇编

2025年10月7日 07:15

echart是啥(“echarts”翻译成中文是什么)

echart是啥(“echarts”翻译成中文是什么)

大家好,今天小编来为大家解答以下的问题,关于echart是啥,“echarts”翻译成中文是什么这个很多人还不知道,现在让我们一起来看看吧!本文目录“echarts”翻译成中文是什么echarts.js是什么帆软报表和 echarts什么意

2026年3月29日 23:15

js写入本地json文件(vue项目导入本地json文件的方法)

js写入本地json文件(vue项目导入本地json文件的方法)

这篇文章给大家聊聊关于js写入本地json文件,以及vue项目导入本地json文件的方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录vue项目导入本地json文件的方法js创建json数据并保存vue配置请求本地json数

2026年4月12日 14:00

java分为哪几种(java各种类都是哪些)

java分为哪几种(java各种类都是哪些)

各位老铁们好,相信很多人对java分为哪几种都不是特别的了解,因此呢,今天就来为大家分享下关于java分为哪几种以及java各种类都是哪些的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录java各种类都是哪些ja

2025年12月12日 13:45

success的几种用法(success用法固定搭配是什么)

success的几种用法(success用法固定搭配是什么)

各位老铁们好,相信很多人对success的几种用法都不是特别的了解,因此呢,今天就来为大家分享下关于success的几种用法以及success用法固定搭配是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录su

2026年3月22日 03:45

txt编程简单程序(如何用txt文档做关机程序)

txt编程简单程序(如何用txt文档做关机程序)

今天给各位分享如何用txt文档做关机程序的知识,其中也会对如何用txt文档做关机程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何用txt文档做关机程序利用C#编写一段读写TXT文本的小程序如何编写程序代

2026年1月22日 08:30

论坛代码html(Discuz网址后缀怎么改成html)

论坛代码html(Discuz网址后缀怎么改成html)

各位老铁们,大家好,今天由我来为大家分享论坛代码html,以及Discuz网址后缀怎么改成html的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录D

2026年9月2日 20:30

c语言基础源代码(C语言源代码是什么)

c语言基础源代码(C语言源代码是什么)

其实c语言基础源代码的问题并不复杂,但是又很多的朋友都不太了解C语言源代码是什么,因此呢,今天小编就来为大家分享c语言基础源代码的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录C语言源代码是什么c语言编程,要源代

2025年12月30日 12:30

qq代码公安局已加入该群(QQ突然发消息“公安局已加入该会话”怎么办)

qq代码公安局已加入该群(QQ突然发消息“公安局已加入该会话”怎么办)

各位老铁们,大家好,今天由我来为大家分享qq代码公安局已加入该群,以及QQ突然发消息“公安局已加入该会话”怎么办的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始

2026年5月27日 01:00

php平台版本建议64(最低要求什么版本的PHP)

php平台版本建议64(最低要求什么版本的PHP)

这篇文章给大家聊聊关于php平台版本建议64,以及最低要求什么版本的PHP对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录最低要求什么版本的PHPxampp v5.6.28支持 64位系统吗怎样选择PHP的版本PHP后面的X8

2026年1月5日 17:30

网站下载的软件(手机从网站上下载的软件一般下到哪个文件夹里)

网站下载的软件(手机从网站上下载的软件一般下到哪个文件夹里)

今天给各位分享手机从网站上下载的软件一般下到哪个文件夹里的知识,其中也会对手机从网站上下载的软件一般下到哪个文件夹里进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录手机从网站上下载的软件一般下到哪个文件夹里免费

2025年7月28日 05:15

dz论坛源码出售(请问DZ论坛中这样的帖子是怎么设置的)

dz论坛源码出售(请问DZ论坛中这样的帖子是怎么设置的)

各位老铁们,大家好,今天由我来为大家分享dz论坛源码出售,以及请问DZ论坛中这样的帖子是怎么设置的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录请

2026年6月4日 12:15

mysql数据库怎么初始化(初始化腾讯云mysql数据库时支持什么格式)

mysql数据库怎么初始化(初始化腾讯云mysql数据库时支持什么格式)

本篇文章给大家谈谈mysql数据库怎么初始化,以及初始化腾讯云mysql数据库时支持什么格式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录初始化腾讯云mysql数据库时支持什么格式如何初始化MySQL数据库springsid

2025年8月3日 05:30

c语言整型指针(C语言 整数型指针作为参数传递的问题)

c语言整型指针(C语言 整数型指针作为参数传递的问题)

大家好,c语言整型指针相信很多的网友都不是很明白,包括C语言 整数型指针作为参数传递的问题也是一样,不过没有关系,接下来就来为大家分享关于c语言整型指针和C语言 整数型指针作为参数传递的问题的一些知识点,大家可以关注收藏,免得下次来找不到哦

2025年7月16日 08:00

hashset类添加元素的方法(java 怎么给set赋值)

hashset类添加元素的方法(java 怎么给set赋值)

大家好,关于hashset类添加元素的方法很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java 怎么给set赋值的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮

2026年5月1日 10:00

英国首相宣布(英国首相约翰逊辟谣将入职中国钻石公司,事情的真相到底是什么)

英国首相宣布(英国首相约翰逊辟谣将入职中国钻石公司,事情的真相到底是什么)

今天给各位分享英国首相约翰逊辟谣将入职中国钻石公司,事情的真相到底是什么的知识,其中也会对英国首相约翰逊辟谣将入职中国钻石公司,事情的真相到底是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录英国首相约翰逊

2025年7月16日 21:00

sutool插件(怎么用Sketchup较快的制作玻璃的分隔杆,就是一大片玻璃幕墙上的分隔杆)

sutool插件(怎么用Sketchup较快的制作玻璃的分隔杆,就是一大片玻璃幕墙上的分隔杆)

“sutool插件”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看sutool插件(怎么用Sketchup较快的制作玻璃的分隔杆,就是一大片玻璃幕墙上的分隔杆)!本文目录怎么用Sketchup较快的制作玻璃的分隔杆,就是一大

2025年12月23日 01:30

工作证模板制作(工作证怎么批量制作)

工作证模板制作(工作证怎么批量制作)

各位老铁们好,相信很多人对工作证模板制作都不是特别的了解,因此呢,今天就来为大家分享下关于工作证模板制作以及工作证怎么批量制作的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录工作证怎么批量制作excel工作证怎么

2025年11月4日 15:30

crucial同义词替换(请问雅思阅读同义词的替换有什么)

crucial同义词替换(请问雅思阅读同义词的替换有什么)

各位老铁们好,相信很多人对crucial同义词替换都不是特别的了解,因此呢,今天就来为大家分享下关于crucial同义词替换以及请问雅思阅读同义词的替换有什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录请问雅

2026年7月14日 10:45

绘图仪属于什么设备(绘图仪是计算机的输入设备吗,还有鼠标器是计算机的输入设备吗)

绘图仪属于什么设备(绘图仪是计算机的输入设备吗,还有鼠标器是计算机的输入设备吗)

“绘图仪属于什么设备”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看绘图仪属于什么设备(绘图仪是计算机的输入设备吗,还有鼠标器是计算机的输入设备吗)!本文目录绘图仪是计算机的输入设备吗,还有鼠标器是计算机的输入设备吗绘图仪属

2025年9月17日 00:45

近期文章

char ch用法(c语言char ch)
2026-09-24 18:45:02
本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索