1、定制调度任务:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.rd.ifaes.core.project.domain.Project; /** * 项目缓存延时调度任务 * @author lh * @version 3.0 * @since 2016-8-26 * */ public class ProjectCacheDelaySchedule implements Runnable { private final static Logger LOGGER = LoggerFactory.getLogger(ProjectCacheDelaySchedule.class); //项目信息 private Project project; //延时时间(单位:秒) private long delay; public ProjectCacheDelaySchedule(Project project) { super(); this.project = project; delay = project.getShowTime().getTime() - System.currentTimeMillis(); delay = (delay > 0) ? delay / 1000 : 0; } /** * 取得延时时间 * @return */ public long getDelay() { return delay; } /** * project添加到缓存 */ @Override public void run() { LOGGER.info("project to cache, projectNo="+project.getProjectNo()); ProjectCache.setProject(project); } }
2、加入调度任务:
private static ScheduledExecutorService projectSaleService = Executors.newScheduledThreadPool(1); /** * 项目上架 ( 仅供后台产品或借贷上架用 ) * @param project */ public static void projectSale(Project project){ ProjectCacheDelaySchedule executor = new ProjectCacheDelaySchedule(project); projectSaleService.schedule(executor, executor.getDelay(), TimeUnit.SECONDS); }
The end!
相关推荐
本Demo以"基于SSM+quartz的定时任务管理"为主题,将展示如何在Spring、SpringMVC和MyBatis(SSM)框架基础上,集成Quartz作为调度引擎,实现高效灵活的定时任务管理。 **1. SSM框架简介** SSM是Spring、SpringMVC...
7. **延时与超时**:FreeRTOS提供了`vTaskDelay()`函数,任务可以调用此函数在指定的时钟滴答数后自动恢复执行,这对于实现周期性任务非常有用。 8. **调试工具**:FreeRTOS提供了一些内置的调试工具,如任务状态...
【标题】:“不使用数据库动态设置...这个“celery_demo-master”项目是一个很好的学习资源,它展示了如何在实际项目中实施上述概念,帮助开发者理解如何在不依赖数据库的情况下利用Celery进行高效的任务管理和调度。
2. 任务调度:`OS_Sched()`函数是UCOS的调度核心,它会根据任务的优先级进行调度。 3. 任务切换:当有更高优先级的任务就绪时,`OSIntExit()`或`OSTaskSwHook()`会被调用来实现任务间的切换。 4. 信号量与互斥量:...
1. **Handler**: Handler是Android中处理消息和调度任务的重要组件。它可以在Android主线程中执行任务,避免了在其他线程中更新UI的操作导致的线程安全问题。Handler主要有两个核心方法:`sendMessage`和`...
3. **时间管理**:`vTaskDelay()`函数用于让任务暂停指定的延时时间,而`xTaskGetTickCount()`可以获取自系统启动以来的时钟周期数。 4. **同步机制**:DEMO可能包含了信号量(`xSemaphoreCreateMutex()`)或互斥锁的...
4. **时间管理**:系统时钟提供定时器服务,支持绝对和相对延时,以及周期性任务调度。 5. **可移植性**:UCOSII使用C语言编写,与硬件无关,便于在不同处理器上移植。 三、UCOSII Demo分析 "ucosii_demo"中的示例...
10. **延时调度(Delayed Dispatch)**:GCD允许开发者设置延迟执行任务,这在需要定时触发操作时非常有用。 在实际开发中,GCD可以有效地解决多线程同步问题,提高程序的性能和响应速度。例如,你可以将耗时的计算...
`ScheduledExecutorService`是`ExecutorService`的扩展,提供了调度任务的能力,可以用来执行一次或定期执行任务。下面是一个简单的使用`ScheduledExecutorService`实现延迟执行的Java代码示例: ```java import ...
UCOSIII还提供了其他任务控制功能,如任务挂起(`OS_TaskSuspend()`)、任务恢复(`OS_TaskResume()`)、任务延时(`OS_TaskDelay()`)等,这些功能使得开发者能够灵活地控制任务的执行流程。 总结,UCOSIII任务...
4. **RTOS(实时操作系统)概念**:虽然DEMO可能不包含完整的RTOS,但理解如何在简单的嵌入式系统中实现任务调度是很有价值的。 5. **嵌入式系统的调试技巧**:例如使用仿真器或JTAG接口进行代码调试,分析程序运行...
任务的执行是由调度器根据优先级进行切换的,但由于此DEMO是单线程,所以没有任务切换,系统始终执行该LED控制任务。为了实现定时,可以利用UCOS-III的定时器功能,如OSTimerCreate()创建一个周期性定时器,回调函数...
阻塞态的任务在延时结束后或外部事件触发后通常会返回到就绪态,等待调度器安排执行。 FreeRTOS中还有一个任务列表的概念,它由三个列表组成,分别是就序列表、阻塞列表和挂起列表。就序列表按照任务优先级来存放...
本Demo代码"**GCDAfterTest Demo**"专注于展示如何利用GCD实现延迟执行任务,即在指定时间后才开始运行某段代码。下面我们将深入探讨GCD的核心概念以及如何使用它来延迟运行队列。 **GCD基础知识** GCD是基于C语言...
你可以将任务提交到队列,GCD会负责管理和调度这些任务的执行。 3. **主队列(Main Queue)**:这是默认的串行队列,与应用程序的主线程关联。在主队列上执行的任务会在用户界面线程上运行,确保了UI更新的同步性。...
STM32任务调度器是嵌入式开发中的一个重要概念,特别是在实时操作系统...Demo文件可能包含了一个具体的STM32任务调度器的示例代码,通过分析和学习这个示例,你可以更深入地了解如何在STM32上实现和应用任务调度。
- **调度策略**:支持CRON表达式定时、固定延时、一次性任务等多种调度方式。 - **监控与告警**:集成监控系统,对作业的运行状态进行实时监控,异常时发送告警通知。 - **扩展应用**:结合微服务、容器化等技术...
DEMO一般会创建两个任务,一个用于控制LED闪烁,另一个用于延时,通过信号量或者互斥锁实现同步。这有助于理解UCOS的任务切换和同步机制。 五、UCOS的中断服务程序 在STM32F407上,中断服务程序需谨慎处理,因为...
2. **功能拓展**:根据需求,可以添加定时任务、分布式爬虫、爬虫调度系统等功能,提升爬虫的灵活性和性能。 总之,Java爬虫是Java开发者必备的一项技能,通过理解和实践本Java爬虫Demo,开发者能够快速掌握爬虫的...
任何在主队列上调度的任务都会在主线程上执行,确保UI的流畅性。 在实践中,`GCDAfterTestAll`可能包含多个示例,演示如何在不同类型的队列上使用`dispatch_after`,以及如何处理不同优先级的任务。这将帮助开发者...