Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >执行器服务关机与shutdownNow的区别

执行器服务关机与shutdownNow的区别
EN

Stack Overflow用户
提问于 2012-07-17 02:02:09
回答 3查看 60.3K关注 0票数 83

我想知道shutdown()shutdownNow()在关闭Executor Service方面的基本区别

据我所知,

shutdown()应该用于优雅的关机,这意味着所有正在运行并排队等待处理但未启动的任务都应该被允许完成。

shutdownNow()会突然关闭,这意味着一些未完成的任务被取消,而未启动的任务也被取消。还有什么东西是我遗漏的吗?

P.S:我在如何关闭执行器服务上发现了另一个与此相关的问题,但并不完全是我想知道的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-17 02:05:14

总之,你可以这样想:

  • shutdown()只会告诉executor服务它不能接受新的任务,但是已经提交的任务继续运行
  • shutdownNow()也会这样做,将尝试通过中断相关线程来取消已经提交的任务的。注意,如果任务忽略中断,shutdownNow的行为将与shutdown完全相同。

您可以尝试下面的示例并将shutdown替换为shutdownNow,以更好地理解不同的执行路径:

  • 对于shutdown,输出是Still waiting after 100ms: calling System.exit(0)...,因为正在运行的任务是,而不是中断并继续运行。
  • 对于shutdownNow,输出是interruptedExiting normally...,因为正在运行的任务被中断,捕获中断,然后停止它正在执行的操作(中断while循环)。
  • 使用shutdownNow时,如果注释掉while循环中的行,就会得到Still waiting after 100ms: calling System.exit(0)...,因为中断不再由正在运行的任务处理。
代码语言:javascript
代码运行次数:0
复制
public static void main(String[] args) throws InterruptedException {
    ExecutorService executor = Executors.newFixedThreadPool(1);
    executor.submit(new Runnable() {

        @Override
        public void run() {
            while (true) {
                if (Thread.currentThread().isInterrupted()) {
                    System.out.println("interrupted");
                    break;
                }
            }
        }
    });

    executor.shutdown();
    if (!executor.awaitTermination(100, TimeUnit.MICROSECONDS)) {
        System.out.println("Still waiting after 100ms: calling System.exit(0)...");
        System.exit(0);
    }
    System.out.println("Exiting normally...");
}
票数 153
EN

Stack Overflow用户

发布于 2015-09-15 02:00:33

  • shutdown()

要终止ExecutorService中的线程,您可以调用它的shutdown()方法。ExecutorService不会立即关闭,但它将不再接受新任务,一旦所有线程都完成了当前任务,ExecutorService就会关闭。调用关机()之前提交给ExecutorService的所有任务都将被执行。

  • shutdownNow()

如果要立即关闭ExecutorService,可以调用shutdownNow()方法。这将尝试立即停止所有执行任务,并跳过所有已提交但未处理的任务。对于执行的任务,没有任何保证。也许他们停止了,也许执行到最后。这是最大的努力尝试。

票数 9
EN

Stack Overflow用户

发布于 2012-07-17 02:06:04

来自javadocs

void shutdown 启动有序关机,执行以前提交的任务,但不接受任何新任务。 List<Runnable> shutdownNow() 尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。 除了尽力停止处理积极的执行任务之外,没有任何保证是肯定的。 例如,典型的实现将通过Thread.interrupt()取消,因此任何无法响应中断的任务都可能永远不会终止。 返回:从未开始执行的任务列表

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11520189

复制
相关文章
javascript将html实体转回
有时候我们可能需要向html中传递html代码。但是因为我们的后台框架使用了laravel。所以我们在赋值的时候就会变成:
魔王卷子
2019/05/31
9780
短实体,长句实体抽取
“半指针-半标注”方法实体的抽取器,基于苏神的三元组抽取方法改造,这里取消了三元组抽取模型中对s的抽取,直接抽取实体并做分类(相当于直接抽取p和o)。改造后的实体抽取方法不仅可以运用于短实体的抽取,也可以运用到长句实体的抽取。
机器学习AI算法工程
2020/09/14
1.9K0
EF实体中的修改
思路:先从ObjectContext取出实体,然后将前台传过来的DTO属性对应赋值到我们的实体上,然后调用ObjectContext的保证修改方法。
跟着阿笨一起玩NET
2018/09/19
1.1K0
springboot 根据实体类生成数据库中表BaseEntity(公共实体)配置文件application.yml 子类实体:
1.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。
用户5899361
2020/12/07
5K0
SpringBoot 使用注解将配置文件自动映射到属性和实体类
1. 属性单独映射 ---- 1. Controller上面配置 @PropertySource({"classpath:application.properties"}) 2. 对要配置的属性添加注解 @Value("${web.file.path}") private String filePath; 3. 接口测试 @GetMapping("/test/property-source") public Object testPropertySource() { System.out.print
山海散人
2021/03/03
1.3K0
nginx设置header如果没有值
map 指令是由 ngx_http_map_module 模块提供的,默认情况下安装 nginx 都会安装该模块。
十毛
2022/08/23
1.4K0
nginx设置header如果没有值
[NewLife.XCode]实体工厂(拦截处理实体操作)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。
大石头
2019/07/02
1K0
实体识别(1) -实体识别任务简介
命名实体识别(Named Entity Recognition,简称NER) , 是指识别文本中具有特定意义的词(实体),主要包括人名、地名、机构名、专有名词等等,并把我们需要识别的词在文本序列中标注出来。
致Great
2023/08/25
4910
实体识别(1) -实体识别任务简介
Apple Card实体卡曝光,只有logo没有卡号
在今年3月的春季发布会上,苹果在Apple Pay的基础上推出了信用卡“Apple Card”,就在近日,国外知名数码产品爆料者Ben Geskin在推特上展示了苹果实体信用卡的真面目,从图片上可以看出这款信用卡的设计非常简约,卡面上除了logo就是EMV芯片。
镁客网
2019/05/16
7900
JS魔法堂:再识ASCII实体、符号实体和字符实体
一、前言                                            相信大家都熟悉通过字符实体 &nbsp; 来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢。 二、初识HTML实体                                                                    由于HTML中某些字符是预留的(如>和<等),若要在进行HTML解析出来后能正确显示预留字符,则需要
^_^肥仔John
2018/01/18
2.2K0
实体-联系图(ER图)_实体关系图
我们通常用实体、联系和属性这三个概念来理解现实问题,因此ER模型比较接近人的思维方式。此外,ER模型用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它,因此,ER模型可以作为用户与分析员之间有效的交流工具。
全栈程序员站长
2022/09/29
2.3K0
实体-联系图(ER图)_实体关系图
python实现命名实体识别指标(实体级别)
{'ALBUM': [(18, 3)], 'SINGER': [(11, 3)], 'SONG': [(2, 3), (6, 3)], 'TAG': [(23, 3)]}
西西嘛呦
2020/11/12
1.3K0
将实体光盘制作成光盘映像iso文件
春节假期整理历史物件时发现一些书籍的光盘,虽然买了多年但一直没有看过,因为自己在用的电脑都没有光驱。正好老爸的电脑是带光驱的,想着趁过节把这些光盘的内容读取出来存在NAS上方便后续使用。 使用UltraISO软件直接“制作光盘映像文件”就可以将光盘的内容制作成iso文件,便于保存在磁盘等介质上。基本最长的也就是10分钟左右搞定。
Alfred Zhao
2023/02/10
2K0
HTML 字符实体
在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。
用户8442333
2021/08/21
1.7K0
HTML字符实体
刚刚在修改文件的时候,空格怎么都打不上,后来反应过来得使用html字符实体,为了方便自己查找,便有了这篇文章
用砖头敲代码
2022/06/08
1.4K0
组合实体模式
组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。
Java架构师必看
2020/04/13
4980
JPA实体类中的注解
@Entity   标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应,如果是逆向生成表的话就会以简单类名作为表名   如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表; @Id   标注于属性上,通常是在get方法上,也可以在属性的声明上。   用于表示该属性作为ID主键 @GeneratedValue
二十三年蝉
2018/03/29
3.9K0
EntityFramework附加实体
//0.0创建修改的 实体对象 Models.BlogArticle model = new BlogArticle(); model.AId = 12; model.ATitle = "新的数据"; model.AContent = "新的数据~~~~~"; //0.1添加到EF管理容器中,并获取 实体对象 的伪包装类对象 DbEntityEntry<Models.BlogArticle> entry = db.Entry<Models.BlogArticle>(model); //**如果使用 En
liulun
2018/01/12
7570
实体识别(2) -命名实体识别实践CRF
CRF,英文全称为Conditional Random Field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场。
致Great
2022/03/30
1.7K0
实体识别(2) -命名实体识别实践CRF
选择块参照中嵌套的实体
在利用ObjectARX进行CAD二次开发时,如何选择块参照中嵌套的实体,并进行进行下一步操作?这个问题的难点是:如何判断用户选中的实体到底是块参照里面的非嵌套对象实体?还是块参照中嵌套的块参照的实体?本文利用全局函数acedNEnsSelP解决了这个问题,并可实现:如果用户选择块参照中嵌套的实体,直接视为用户选择了这个嵌套的块参照,效果如图。
用户3519280
2023/07/31
2651

相似问题

无法用python连接到Server

12

用python中的connectorx连接MS SQL Server

216

无法用python连接到Azure Server

20

SQL Server SELECT with READONLY子句

40

用Streamlit编写连接python和Server的函数?

218
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档