`

ScheduledThreadPool执行延时任务

 
阅读更多
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任务执行完毕!!!
 
分享到:
评论
1 楼 blgaici1 2012-06-20  
给力...

相关推荐

    android 延时或重复执行任务

    在Android开发中,有时我们需要实现延时或重复执行的任务,比如定时更新UI、定期发送心跳包、延时启动服务等。这些需求可以通过多种方式来实现,包括`Timer`、`Handler`、`Thread`以及`AlarmManager`。下面将详细...

    springboot执行延时任务之DelayQueue的使用详解

    Spring Boot延时任务之DelayQueue的使用详解 DelayQueue是一个无界阻塞队列,只有在延迟期满时,才能从中提取元素。它提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。DelayQueue的元素...

    ucosii 恢复延时中的任务

    例如,当一个任务在等待信号量时被阻塞,如果其他任务释放了这个信号量,那么等待的延时任务就会被唤醒并恢复执行。 总之,"UCOSII恢复延时中的任务"这一话题涵盖了UCOSII的多任务调度、任务延时、中断处理以及任务...

    Go语言基于ETCD的Watch机制的延时任务库,延时任务通.zip

    Go语言基于ETCD的Watch机制的延时任务库,延时任务通

    使用Redis实现延时任务的解决方案

    延时任务是指在特定时间点触发的任务,通常用于确保操作在预设的延迟后执行。例如,当用户下单后,系统可能需要在一段时间后发送确认邮件或处理支付。 **JDK内置的延迟队列(DelayQueue)** DelayQueue是一个基于...

    在逻辑开发中,调用普通定时器使用非阻塞延时的思想进行多任务处理

    而非阻塞延时则不同,它允许任务在等待期间继续执行其他工作,通过定时器事件来唤醒任务,从而提高系统的并发性能。 普通定时器是实现非阻塞延时的一种常见工具。在嵌入式系统中,定时器可以分为硬件定时器和软件...

    空闲任务与阻塞延时(1).zip

    - **同步**:在多任务环境中,任务间的同步可以通过延时来实现,例如,确保一个任务在另一个任务完成其工作后才开始执行。 在这个压缩包文件中,"空闲任务与阻塞延时(1)"可能是包含代码示例或教程,用于演示如何...

    javascript延时执行跳转或执行函数

    在延时执行中,回调函数可以在每次延时结束后执行,处理一些后续任务。例如,你可能希望在每次跳转前执行一些清理工作,或者在延迟执行函数后更新UI状态。 以下是一个简单的示例,展示了如何结合这些技术点实现延时...

    cmd延时执行命令

    @echo off pushd "%~dp0" timeout /t 20 /nobreak start msconfig.exe ------------------------------- 延时20秒 启动 msconfig.exe 内容就这些

    UCOSIII-3-阻塞延时与空闲任务

    当一个任务执行阻塞延时后,UCOSIII会切换到下一个就绪任务。如果所有任务都处于阻塞状态,空闲任务就会接手。空闲任务的存在保证了即使在系统没有其他活动任务时,CPU也不会停止工作,而是执行预定义的低优先级任务...

    Node.js-基于kue的egg延时队列

    此外,Egg.js的插件机制也允许我们与其他插件(如日志插件)配合,实现任务执行的完整记录和追踪。 总结来说,通过将Kue的延时队列功能与Egg.js框架结合,我们可以构建出一个高效、可靠的后台任务处理系统,这在...

    跟着野火学FreeRTOS:第一段(任务延时列表)

    任务延时是FreeRTOS的一个重要特性,它允许任务暂停执行一段时间,然后由RTOS调度器自动恢复。延时操作常用于等待某个事件发生或者让其他任务有机会运行。在FreeRTOS中,`vTaskDelay()`函数用于使当前任务延时指定的...

    tomcat_批处理延时命令bat@计划任务

    本压缩包"tomcat_批处理延时命令bat@计划任务"提供的内容恰好聚焦于这个主题,它涉及到如何利用批处理脚本来启动Tomcat服务器,并通过计划任务实现自动化的开机启动。 首先,我们要理解什么是Tomcat。Tomcat是一款...

    51单片机延时算法

    ### 51单片机延时算法详解 在51单片机的开发过程中,延时函数是非常重要的组成部分,尤其在需要控制精确时间间隔的应用场景下。本文将深入探讨51单片机中的几种常见延时算法,并通过具体的示例代码来解释其背后的...

    人工智能-项目实践-管理系统-定时任务管理系统

    项目简介 使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 查看文档 原有的延时任务拆分为独立项目延迟队列 功能特性 ...任务执行结果通知, 支持邮件、Slack、Webhook

    通电延时和断电延时电路接线图

    通电延时和断电延时电路接线图 通电延时亮灯(如图): 延时断电(如图): ...当断电延时继电器供应断电后延时触点闭锁然后进行转换工作状态,当延时触点超过整定的时间后驱动电路执行初始状态。

    51单片机Keil C延时程序的简单研究.rar_51 延时_keil_延时_延时程序

    需要注意的是,循环计数法会占用CPU执行时间,可能会影响其他任务的执行。 在实际应用中,应根据项目需求选择合适的延时方法。对于需要精确延时的应用,推荐使用定时器;对于简单的延时,可以采用循环计数法。在...

    精妙的单片机非阻塞延时程序设计

    通过在主循环中调用定时处理函数,并根据状态标志执行相应任务,可以轻松实现多个任务的同时处理,而且不会因为某个任务的延时而影响其他任务的正常执行。 #### 七、总结 本文介绍了一种精妙的单片机非阻塞延时程序...

    NXP i.MX RT1052 FreeRTOS实战:任务延时列表的实现

    2. **设置延时**:在任务执行过程中,可以调用`vTaskDelay()`函数,传入一个以ticks(时钟节拍)为单位的延时值。FreeRTOS的时钟节拍由硬件定时器或软件定时器驱动,通常每毫秒或更短时间产生一次。 3. **任务状态...

    STM32F1和STM32F4延时函数

    - 硬件定时器在执行延时任务时,可能会影响其他系统功能,需确保不会干扰其他定时或事件处理。 - 如果需要精确的延时,必须校准延时函数,因为编译器优化和不同编译器设置可能影响循环的执行时间。 - 对于微秒...

Global site tag (gtag.js) - Google Analytics