项目中最近使用了多个定时任务处理业务需求,于是在实现业务逻辑过程中,产生了上图一些思考和疑问,现在利用空余时间进行一次复盘。项目搭建项目搭建环境:JDK1.8+SpringBoot主启动类:加上@EnableScheduling
新建定时任务配置类:ScheduledTask;定义两个定时任务,简单打印一下线程名字和时间戳 源码如下:@Component
public class Schedule
转载
2024-07-04 22:15:50
391阅读
一 ScheduledThreadPoolExecutor定时线程池类的类结构图 它接收SchduledFutureTask类型的任务,是线程池调度任务的最小单位,有三种提交任务的方式:1. schedule
2. scheduledAtFixedRate
3. scheduledWithFixedDelay它采用DelayQueue存储等待的任务DelayQueue内部封装了一个Priority
转载
2023-10-26 14:10:41
421阅读
# Java 线程池定时执行的入门指南
在 Java 中,使用线程池来实现定时任务是一种高效且灵活的方法。本文将帮助你理解如何使用 `ScheduledExecutorService` 来实现这一功能,并提供详细的步骤和示例代码。
## 实现流程
| 步骤 | 描述 |
|-------
# 使用Java实现线程池定时执行任务
在Java编程中,线程池是一种高效地管理和复用线程的机制。而定时任务是多种应用场景中非常常见的需求,比如定时发送邮件、定时清理数据等等。本文将带你一步步实现“Java 线程池 定时执行”功能。
## 一、实现流程
为了让你更好地理解实现步骤,下面是我们需要执行的主要步骤及其描述。
| 步骤 | 描述 |
|
一、内容为一个Demo,也是记录一下我自己在学习的过程中的记录,防止后面忘记了可以找到看一看(自己写的终归是好看懂写),没有跟项目实战逻辑结合,需要的可以自己敲一遍,知道个流程(介意请右转),毕竟springBoot为我们封装了很多,只需要简单的配置就可以使用。二、下面开始正文 1.创建个springboot项目吧,使用idea的spring Initializr一键创建,可以使用**https:
转载
2023-08-27 22:31:02
168阅读
这里提供两种在指定时间后启动线程的方法。一是通过java.util.concurrent.DelayQueue实现;二是通过java.util.concurrent.ScheduledThreadPoolExecutor实现。
1. java.util.concurrent.DelayQueue
类DelayQueue是一个无界阻塞队列,只有在延迟期满
转载
2023-07-19 13:31:42
325阅读
一、为什么使用线程池1、降低资源消耗,减少线程创建和销毁次数,每个工作线程可以重复利用,执行多个任务2、可根据系统承受能力,调整工作线程的数目,防止消耗过多的内存二、java 线程池使用 ExecutorService真正的线程池接口。ScheduledExecutorService能和Timer/TimerTask类似,解决那些需要任务重复执行的问题。ThreadPoolExecuto
转载
2024-02-14 13:20:01
89阅读
问题描述前端的使用ajax发送了一个请求到后端后端自定义了一个线程上下文和实现了一个拦截器Interceptorpublic class BaseContext {
public static ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
public static void setCur
转载
2024-06-25 20:37:11
54阅读
前言: 在 Java 语言中,有两个线程池可以执行定时任务:ScheduledThreadPool 和 SingleThreadScheduledExecutor,其中 SingleThreadScheduledExecutor 可以看做是 ScheduledThreadPool 的单线程版本,它的用法和 ScheduledThreadPool 是一样的,所以本文重点来看 ScheduledThr
转载
2023-08-16 19:15:59
94阅读
自建线程池的参数介绍和spring启动类配置线程池执行定时任务一、线程池的作用二、自建线程池的参数介绍1. corePoolSize2. maximumPoolSize3. workQueue4. corePoolSize、workQueue、maximumPoolSize的关系a.b.c.d.5. 参数keepAliveTime6. 参数unit7. 参数threadFactory8. 参数h
转载
2024-04-03 09:56:00
308阅读
首先看个示例:public class Test {
public static void main(String[] args) {
ScheduledExecutorService service = Executors.newScheduledThreadPool(10);
service.schedule(new Runnable() {
转载
2024-06-26 15:09:00
121阅读
在JAVA并发编程之线程池的最后我们讲到了创建定时线程池,其实线程池的创建仍旧是使用的ThreadPoolExcutor的构造函数,具体代码如下:public ScheduledThreadPoolExecutor(int corePoolSize) {
super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
new
转载
2023-10-20 15:39:09
86阅读
# Java 线程池与定时任务的定时执行逻辑
在现代软件开发中,定时任务是一种广泛应用的场景,比如在某个固定时间点更新数据、发送通知等。Java 提供了多种方式来实现定时任务,最常用的是结合线程池和定时调度器。这篇文章将带你了解 Java 线程池的基本概念,以及如何使用它来实现定时任务和定时执行逻辑。
## 线程池的基本概念
线程池是为了提高性能而设计的一种机制。通过预先创建并维护一组线程,
原创
2024-09-23 05:14:45
71阅读
目录ThreadPoolExecutor线程池的状态构造方法工作流程工厂方法提交方法关闭线程池饥饿创建多少线程合适线程池的监控ScheduledExecutorService延迟执行任务定时执行任务处理异常定时任务应用Fork/Join解决任务步骤应用并行归并排序 本篇主要讲解的是jdk自带的线程池,具体线程池的作用可看链接。先来看看线程池的类
转载
2023-08-19 17:43:39
214阅读
ScheduledExecutorService progressExecutorService = Executors.newScheduledThreadPool(1); ScheduledFuture future = progressExecutorService.scheduleAtFixedRate(new Runnable() {// It begins in 0....
原创
2021-07-20 14:29:52
188阅读
# Android 线程池执行定时任务
在Android开发中,有时我们需要执行定时任务,如定期获取数据、更新UI等。使用线程池来管理和执行这些任务是一种高效的方式。本文将通过详细的步骤教导你如何在Android中实现线程池执行定时任务。
## 整体流程
下表展示了实现“Android 线程池执行定时任务”的主要步骤:
```markdown
| 步骤编号 | 步骤描述
线程间的等待唤醒机制Object 类中
void wait () 在其他线程调用此对象的 notify () 方法或 notifyAll () 方法前,导致当前线程等待
void wait (long timeout) 在其他线程调用此对象的 notify () 方法或 notifyAll () 方法,或者超过指定的时间量前,导致当前线程等待。
void notify (
原创
2021-07-06 16:09:33
356阅读
原创
2022-01-20 17:11:41
110阅读
文章目录前言预热:ThreadPoolExecutor构造器四种拒绝策略ThreadPoolExecutor.AbortPolicyThreadPoolExecutor.CallerRunsPolicyThreadPoolExecutor.DiscardPolicyThreadPoolExecutor.DiscardOldestPolicy工作流程正题:ThreadPoolTaskExecuto