当前位置: 首页 > news >正文

线程池概念2

线程池类图

ExecutorService:是一个线程池最基本的接口,提供了提交任务,关闭线程池这些基本的方法。

ScheduledExecutorService:扩展接口,在基础线程池的功能上又新增了任务调度的功能,可以用来定时执行任务。

线程池状态 

线程池中常用的方法

 这里的超时时间是针对的所有tasks,而不是单个task的超时时间。如果超时,会取消没有执行完的所有任务,并抛出超时异常。相当于将每一个future的执行情况用一个list集合保存,当调用future.get()方法取值时和设置的timeout比较,是否超时。

任务调度线程池

有的时候希望任务延时执行(过几秒执行),任务反复执行(过几秒执行一次)。

ScheduledThreadPoolExecutor-延时执行

这里的任务不是串行执行,因为这里核心线程的数量正好是2 。如果这里是1那么就和timer一样是串行执行。前一个任务出现了延时或异常都不影响之后的任务。

 ScheduledThreadPoolExecutor-周期执行

scheduleAtFixedRate(task,initialDelay,period,timeUnit);

task:是要执行的任务。

 initialDelay:初始的延时,比如在打印start后要等待一秒才执行任务。

period:每隔一秒才会执行下一次循环的任务。每次执行任务需要2秒,而这里设置的是隔一秒循环下一次。所以要等两秒才循环下一次。

scheduleWithFixedDelay(task,initialDelay,delay,timeUnit);

与scheduleAtFixedRate不一样的是这个需要等待上一次循环的任务执行完成后才会delay再开启下一次循环的任务。所以这里要等待3s.

 线程池的异常处理

线程池是不会主动去抛出异常的。一般有两种处理方式。

1.主动try catch.

 2.通过实现callable接口,调用get方法。如果出现异常会把异常信息返回。

相关文章:

  • 一键部署设计稿至线上 —— D2C国产神器
  • 死锁检测实现
  • jsp杂草信息分类系统myeclipse开发sql数据库BS模式java编程网页结构serlvet技术mvc框架
  • 2022牛客多校(八)
  • jenkins 持续集成/项目部署
  • 彻底掌握Makefile(二)
  • 【华为机试真题Java】取近似值
  • 如何预备ERP中的事务数据?
  • 360 度评估中的最佳问题推荐
  • 谷粒商城超详细笔记+踩坑(1)——项目环境搭建、人人开源快速开发和代码生成器
  • 性价比首选,百元旗舰级骨传导耳机——南卡Runner CC3实战评测
  • ibatis的xml中<resultMap>使用继承,省时省力
  • CSDN编程竞赛第六期总结
  • 教外谈(1)—— windows逆向入门
  • C语言数据类型、运算符、表达式
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 《深入 React 技术栈》
  • 2018一半小结一波
  • Centos6.8 使用rpm安装mysql5.7
  • Javascript设计模式学习之Observer(观察者)模式
  • Linux Process Manage
  • Lucene解析 - 基本概念
  • Mybatis初体验
  • Twitter赢在开放,三年创造奇迹
  • uni-app项目数字滚动
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 事件委托的小应用
  • 数组的操作
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • %@ page import=%的用法
  • (39)STM32——FLASH闪存
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (理论篇)httpmoudle和httphandler一览
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)Linux+Windows下安装ffmpeg
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core Web APi类库如何内嵌运行?
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 设置默认首页
  • .NET大文件上传知识整理
  • @Autowired @Resource @Qualifier的区别
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [android] 请求码和结果码的作用
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [C/C++] -- 二叉树