package com.jd.schdule;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* ScheduledThreadPool执行延时任务
* 多线程执行多延时任务
* 单线程执行多延时任务
* @author yfzhangbin
*/
public class SchduleTest {
public static void main(String[] args) {
ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(2);
ScheduledExecutorService singleThread = Executors.newSingleThreadScheduledExecutor();
threadPool.schedule(new MyScheduledTask("t1"), 1, TimeUnit.SECONDS);
threadPool.schedule(new MyScheduledTask("t2"), 1, TimeUnit.SECONDS); // t1、t2在多个线程执行t1延时不会影响t2
singleThread.schedule(new MyScheduledTask("t3"), 1, TimeUnit.SECONDS);
singleThread.schedule(new MyScheduledTask("t4"), 1, TimeUnit.SECONDS); // t3、t4 在同一线程执行t3延时会影响 t4
threadPool.shutdown();
singleThread.shutdown();
}
}
class MyScheduledTask implements Runnable {
private String tname;
public MyScheduledTask(String tname) {
this.tname = tname;
}
@Override
public void run() {
System.out.println(tname+"任务开始执行");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(tname+"任务执行完毕!!!");
}
}
输出:
t1任务开始执行
t2任务开始执行
t3任务开始执行
t3任务执行完毕!!!
t4任务开始执行
t2任务执行完毕!!!
t1任务执行完毕!!!
t4任务执行完毕!!!
分享到:
相关推荐
在Android开发中,有时我们需要实现延时或重复执行的任务,比如定时更新UI、定期发送心跳包、延时启动服务等。这些需求可以通过多种方式来实现,包括`Timer`、`Handler`、`Thread`以及`AlarmManager`。下面将详细...
Spring Boot延时任务之DelayQueue的使用详解 DelayQueue是一个无界阻塞队列,只有在延迟期满时,才能从中提取元素。它提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。DelayQueue的元素...
例如,当一个任务在等待信号量时被阻塞,如果其他任务释放了这个信号量,那么等待的延时任务就会被唤醒并恢复执行。 总之,"UCOSII恢复延时中的任务"这一话题涵盖了UCOSII的多任务调度、任务延时、中断处理以及任务...
Go语言基于ETCD的Watch机制的延时任务库,延时任务通
延时任务是指在特定时间点触发的任务,通常用于确保操作在预设的延迟后执行。例如,当用户下单后,系统可能需要在一段时间后发送确认邮件或处理支付。 **JDK内置的延迟队列(DelayQueue)** DelayQueue是一个基于...
而非阻塞延时则不同,它允许任务在等待期间继续执行其他工作,通过定时器事件来唤醒任务,从而提高系统的并发性能。 普通定时器是实现非阻塞延时的一种常见工具。在嵌入式系统中,定时器可以分为硬件定时器和软件...
- **同步**:在多任务环境中,任务间的同步可以通过延时来实现,例如,确保一个任务在另一个任务完成其工作后才开始执行。 在这个压缩包文件中,"空闲任务与阻塞延时(1)"可能是包含代码示例或教程,用于演示如何...
在延时执行中,回调函数可以在每次延时结束后执行,处理一些后续任务。例如,你可能希望在每次跳转前执行一些清理工作,或者在延迟执行函数后更新UI状态。 以下是一个简单的示例,展示了如何结合这些技术点实现延时...
@echo off pushd "%~dp0" timeout /t 20 /nobreak start msconfig.exe ------------------------------- 延时20秒 启动 msconfig.exe 内容就这些
当一个任务执行阻塞延时后,UCOSIII会切换到下一个就绪任务。如果所有任务都处于阻塞状态,空闲任务就会接手。空闲任务的存在保证了即使在系统没有其他活动任务时,CPU也不会停止工作,而是执行预定义的低优先级任务...
此外,Egg.js的插件机制也允许我们与其他插件(如日志插件)配合,实现任务执行的完整记录和追踪。 总结来说,通过将Kue的延时队列功能与Egg.js框架结合,我们可以构建出一个高效、可靠的后台任务处理系统,这在...
任务延时是FreeRTOS的一个重要特性,它允许任务暂停执行一段时间,然后由RTOS调度器自动恢复。延时操作常用于等待某个事件发生或者让其他任务有机会运行。在FreeRTOS中,`vTaskDelay()`函数用于使当前任务延时指定的...
本压缩包"tomcat_批处理延时命令bat@计划任务"提供的内容恰好聚焦于这个主题,它涉及到如何利用批处理脚本来启动Tomcat服务器,并通过计划任务实现自动化的开机启动。 首先,我们要理解什么是Tomcat。Tomcat是一款...
### 51单片机延时算法详解 在51单片机的开发过程中,延时函数是非常重要的组成部分,尤其在需要控制精确时间间隔的应用场景下。本文将深入探讨51单片机中的几种常见延时算法,并通过具体的示例代码来解释其背后的...
项目简介 使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 查看文档 原有的延时任务拆分为独立项目延迟队列 功能特性 ...任务执行结果通知, 支持邮件、Slack、Webhook
通电延时和断电延时电路接线图 通电延时亮灯(如图): 延时断电(如图): ...当断电延时继电器供应断电后延时触点闭锁然后进行转换工作状态,当延时触点超过整定的时间后驱动电路执行初始状态。
需要注意的是,循环计数法会占用CPU执行时间,可能会影响其他任务的执行。 在实际应用中,应根据项目需求选择合适的延时方法。对于需要精确延时的应用,推荐使用定时器;对于简单的延时,可以采用循环计数法。在...
通过在主循环中调用定时处理函数,并根据状态标志执行相应任务,可以轻松实现多个任务的同时处理,而且不会因为某个任务的延时而影响其他任务的正常执行。 #### 七、总结 本文介绍了一种精妙的单片机非阻塞延时程序...
2. **设置延时**:在任务执行过程中,可以调用`vTaskDelay()`函数,传入一个以ticks(时钟节拍)为单位的延时值。FreeRTOS的时钟节拍由硬件定时器或软件定时器驱动,通常每毫秒或更短时间产生一次。 3. **任务状态...
- 硬件定时器在执行延时任务时,可能会影响其他系统功能,需确保不会干扰其他定时或事件处理。 - 如果需要精确的延时,必须校准延时函数,因为编译器优化和不同编译器设置可能影响循环的执行时间。 - 对于微秒...