ExecutorService对象的shutdown()和shutdownNow()的区别

Java:自定义ScheduledExecutorService来实现定时提交任务 1. 声明 当前内容主要为本人学习和复习定时任务 一般的定时任务: 使用Executors.newScheduledThreadPool方式创建 调用scheduleWithFixedDelay来定时执行 主要为实现定时周期性任务,但是每个周期性的任务执行的时间不确定,这个就导致一些问题例如:必须每天提交日志信息(不能延迟) 2.newScheduledThreadPool的demo 如下:一个1秒钟的定时任务 public static void main(String[] args) { Sch 阅读详情
可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方法在终止前允许执行以前提交的任务,而 shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务。在终止时,执行程序没有任务在执行,也没有任务在等待执行,并且无法提交新任务。应该关闭未使用的 ExecutorService 以允许回收其资源。 

下列方法分两个阶段关闭 ExecutorService。第一阶段调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务: 

  1. void shutdownAndAwaitTermination(ExecutorService pool) {  
  2.   pool.shutdown(); // Disable new tasks from being submitted  
  3.   try {  
  4.     // Wait a while for existing tasks to terminate  
  5.     if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {  
  6.       pool.shutdownNow(); // Cancel currently executing tasks  
  7.       // Wait a while for tasks to respond to being cancelled  
  8.       if (!pool.awaitTermination(60, TimeUnit.SECONDS))  
  9.           System.err.println(”Pool did not terminate”);  
  10.     }  
  11.   } catch (InterruptedException ie) {  
  12.     // (Re-)Cancel if current thread also interrupted  
  13.     pool.shutdownNow();  
  14.     // Preserve interrupt status  
  15.     Thread.currentThread().interrupt();  
  16.   }  
  17. }  
 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();
   }
 }


shutdown调用后,不可以再submit新的task,已经submit的将继续执行。

shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list

Android性能优化之使用线程池处理异步任务 说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式: 1、继承Thread类 2、实现Runnable接口 虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源。所以,在Java中大多数 阅读详情

相关推荐

ThreadPoolExecutor源码解析(基于Java1.8)

第一部分:ThreadPoolExecutor的继承结构 根据上图可以知道,ThreadPoolExecutor是继承的AbstractExecutorService(抽象类)。再来看一下AbstractExecutorService的结构可以发现,AbstractExecutorService实现了ExecutorService,并且ExecutorService继承Executor接

Rebirth_Love的博客 4717

Java并发包:ScheduledExecutorService

文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。ScheduledExecutorServicejava.util.concurrent.ScheduleExecutorService是一种安排任务执行的ExecutorSer

charming的专栏 8107

Java中ExecutorService线程池的使用(Runnable和Callable多线程实现)

线程的创建和释放,需要占用不小的内存和资源。如果每次需要使用线程时,都new 一个Thread的话,难免会造成资源的浪费,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。不利于扩展,比如如定时执行、定期执行、线程中断,所以很有必要了解下ExecutorService的使用。ExecutorService是Java提供的线程池,也就是说,每次我们需要使用线程的时候,可以通过ExecutorService获得线程。...

BADAO_LIUMANG_QIZHI的博客 8210

(转)ExecutorService对象的shutdown()和shutdownNow()的区别

http://bijian1013.iteye.com/blog/2281156      从上篇文章的实例中,我们用了ExecutorService的shutdown方法,但我们不难发现它还有shutdownNow方法,它们到底有什么区别呢?         这两个方法都可以关闭 ExecutorService,这将导致其拒绝新任务。shutdown() 方法在终止前允许执行以前提交的任...

火因草化的博客 648

STM32驱动GP2Y1010AU0F红外PM2.5传感器:从采样时序到浓度标定

在嵌入式环境监测项目中,模拟传感器输出信号的准确采集是系统可靠性的基石。许多工程师在接触红外散射式粉尘传感器时,常因不了解其特殊的脉冲驱动与采样保持机制,导致ADC读数异常。红外散射原理通过检测颗粒物散射光强来估算粉尘浓度,其输出信号并非稳定直流,而是与LED脉冲同步的短时窗口电压。理解这一时序特征,并掌握在STM32平台上通过定时器与ADC协同完成微秒级精准采样的方法,是获取有效数据的关键。该技术广泛应用于室内空气质量检测、空气净化器控制及DIY环境监测节点等场景。本文以GP2Y1010AU0F为例,详细

weixin_29159127的博客 284

CloudCompare实战:5分钟搞定点云数据预处理(含常见格式转换技巧)

本文提供了一套基于CloudCompare的5分钟点云数据预处理实战指南。文章详细讲解了如何利用这款开源工具,快速完成点云数据的格式转换(如LAS转PLY)、统计离群值降噪、体素网格下采样以及交互式裁剪等核心操作,帮助用户高效清理和规整杂乱数据,为后续分析建模奠定基础。

weixin_29207533的博客 479

线程池关闭方法和线程池拒绝策略

目录 ExecutorService对象的shutdown()和shutdownNow()的区别? 线程池的拒绝策略 java中断线程方式 ExecutorService对象的shutdown()和shutdownNow()的区别? shutdown只是将线程池的状态设置为SHUTWDOWN状态,正在执行的任务会继续执行下去,没有被执行的则中断。而shutdownNow则是将线程池的状态设置为STOP,正在执行的任务则被停止,没被执行任务的则返回。 线程池的拒绝策略 ThreadPoolEx.

weixin_42324471的博客 462

同源策略与跨域

前言:最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到。大致看了下腾讯云关于设置跨域访问的教程,按照前端同学给的域名等选项就给配了,而且测试下来也是好的。但是呢一直不知道什么是跨域这里就做一个简单的学习记录。 一、同源策略 同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。同源策略会阻止一个域的javascrip脚本和另一个域的内容进行交互,是用于隔离潜在恶意文件的关键安全机制;关于这一点我们后面会举例说明。...

mijichui2153的博客 1万+

停止运行ExecutorService中的线程

1 while(true){ 2 try { 3 sleep(1000); 4 } catch (InterruptedException e) { 5 // TODO Auto-generated cat...

weixin_30709061的博客 436

【数据分享】2012-2022年全国及各城市POI(兴趣点)数据(超20G)

POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点,泛指互联网电子地图中的点类数据,基本包含名称、地址、坐标、类别四个属性;随着互联网电子地图服务与LBS应用的普及,POI无论从概念范畴,还是从信息纵深都有了长足发展,互联网各个风口或火山口都和POI有一定关系,如O2O、电商、社交、互联网金融、共享经济等。

J_Giser的博客 2741

请尽可能地详细说明一个VLA项目的立项训练到落地的全流程

一个机器人VLA项目的全流程是一个复杂的系统工程,它深度融合了机器人学 (Robotics)计算机视觉 (CV)和自然语言处理 (NLP)。其核心挑战在于高质量数据的获取和从仿真到现实的有效迁移。与纯粹的软件AI项目相比,它增加了硬件、物理交互和安全性的维度,但其最终能让AI走出虚拟世界、在物理世界中产生实际价值,这也是其巨大的魅力所在。

具身机器人和通用AI 304

Java中如何使用线程池

Ta是一种标准的资源池模式将资源的创建和销毁都委托给资源池完成 用户只需要关注取得资源之后自己的核心操作提前预留活跃资源 在用户需要的时候 能够第一时间满足用户对资源的需求 从而让用户感受很好。

追寻心的步伐 574

VS2022编译xlnt库

xlnt是一个用于读写Excel文件的C++库,本文介绍如何用源代码编译静态或动态xlnt库

QQVQQ的博客 7288
上一篇: java编程思想笔记-并发之并发锁synchronized详解(二)
下一篇: java线程中断机制
光与热
博客等级 码龄11年 55粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值