Java并发编程核心技术:ScheduledThreadPoolExecutor详解
需积分: 5 53 浏览量
更新于2024-06-18
1
收藏 1.28MB PDF 举报
并发编程中的定时任务与线程池
在 Java 中,定时任务和线程池是并发编程的关键组件。 ScheduledThreadPoolExecutor 类是 Java 中的核心类之一,用于处理延时任务或定时任务。下面将详细介绍 ScheduledThreadPoolExecutor 类的结构和工作原理,以及相关的知识点。
ScheduledThreadPoolExecutor 的结构和工作原理
ScheduledThreadPoolExecutor 类用于处理延时任务或定时任务,通过三种不同的任务提交方式:schedule、scheduledAtFixedRate 和 scheduledWithFixedDelay。该类的结构图如下所示:
[图:ScheduledThreadPoolExecutor 的类结构图]
DelayQueue 的实现
ScheduledThreadPoolExecutor 类使用 DelayQueue 来存储等待执行的任务。DelayQueue 是一个基于时间优先级的 PriorityQueue,保证任务能按计划时间顺序执行。DelayQueue 的内部实现了一个基于时间优先级的 PriorityQueue,根据时间先后排序,若时间相同则根据 sequenceNumber 排序。
ScheduledFutureTask 的实现
ScheduledFutureTask 是任务调度的核心,负责任务的异步执行和执行时间的管理。ScheduledFutureTask 的 run 方法是调度任务的关键,它决定了任务是单次执行还是周期性执行。ScheduledFutureTask 的参数包括任务开始的时间、任务的序号和任务执行的时间间隔。
工作线程的执行过程
工作线程会从 DelayQueue 取已经到期的任务去执行;执行结束后重新设置任务的到期时间,再次放回 DelayQueue。ScheduledThreadPoolExecutor 会把待执行的任务放到工作队列 DelayQueue 中,DelayQueue 封装了一个 PriorityQueue,PriorityQueue 会对队列中的 ScheduledFutureTask 进行排序。
DelayedWorkQueue 的数据结构
DelayedWorkQueue 是一个基于最小堆结构的优先队列,用于存储等待执行的任务。DelayedWorkQueue 的实现了一个基于时间优先级的 PriorityQueue,根据时间先后排序,若时间相同则根据 sequenceNumber 排序。
知识点总结
1. ScheduledThreadPoolExecutor 是 Java 中的核心类之一,用于处理延时任务或定时任务。
2. DelayQueue 是一个基于时间优先级的 PriorityQueue,用于存储等待执行的任务。
3. ScheduledFutureTask 是任务调度的核心,负责任务的异步执行和执行时间的管理。
4. 工作线程的执行过程包括从 DelayQueue 取已经到期的任务去执行,并重新设置任务的到期时间。
5. DelayedWorkQueue 是一个基于最小堆结构的优先队列,用于存储等待执行的任务。
ScheduledThreadPoolExecutor 是 Java 中的核心类之一,用于处理延时任务或定时任务。DelayQueue 和 ScheduledFutureTask 是 ScheduledThreadPoolExecutor 的核心组件,用于存储和管理任务。工作线程的执行过程是并发编程中的关键步骤。
点击了解资源详情
点击了解资源详情
2021-05-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
光芒软件工匠
- 粉丝: 797
- 资源: 64
最新资源
- nativescript-plugin-firebase
- world-clocks:此应用程序显示世界各地不同城市的当前时间
- glmm-course:关于R中的回归,GLM,混合效果模型和GLMM的研讨会练习
- polishNewsTitleDatabase:来自波兰的新闻标题数据库,用于分析和机器学习
- object-invariants-properties:图论(GT)自动猜想的对象,不变式和属性:特别是使用Sage程序CONJECTURING:http:nvcleemp.github.ioconjecturing
- VendingMachineTest
- ionic-projeto-hibrido:Projeto RissoSaúdeIntegrada
- Java高校社团管理系统源码.zip
- Template CMS-开源
- stalecucumber:Golang中Python的pickle格式的读写器
- idea的ssm项目的jar包和配置文件(含MyBatis-Generator)
- html-editor-enhanced:Flutter软件包,提供由flutter_inappwebview和Summernote库支持的WYSIWYG编辑器
- image
- JavaEE MVC餐饮管理系统源码.zip
- bs-content-challenge
- openwrt-doc-initiative:用于保存 OpenWrt Wiki 问题跟踪器的存储库