`

Thread_管理异步、定时及周期性任务

 
阅读更多

项目中有很多异步、定时及周期性任务的需求,其实现有一定的特点,汇总以备忘。

 



 

 

简单分析:

 

结构分析:

1.Task
属性包含处理任务的完整类名、任务处理的参数、延迟的时间(毫秒)、执行的周期间隔(毫秒)。
1.1 任务的完整类名
执行任务时,可以根据处理任务的完整类名,利用反射机制生成任务类的实例
1.2 任务处理的参数
执行任务时,可以从该参数中获取相关的参数值。


2.TaskThread
实现了接口Runnable,并且包含了当前线程要执行的任务对象。用户自定义任务类需要extends该类。

 

3.TaskManager
任务管理器包含了任务队列,访问任务队列的线程,并在TaskManage首次初始化时启动此线程。
构造线程池的时候,任务被阻塞时回调方法;另外还包含了异步任务调度器管理的线程池对象、定时和周期任务的线程池对象,分别对异步任务、定时和周期任务的线程进行统一的管理。taskFutures对象用来存放定时任务,为了取消定时任务使用。

 

4.失败任务再次执行
web应用启动时,通过检索数据库得到执行失败的任务的详细信息,包括任务全路径类名,任务参数等,可用来重启失败任务直到执行成功。

 

 

 

  • 大小: 39.6 KB
分享到:
评论

相关推荐

    python异步实现定时任务和周期任务的方法

    如果任务是周期性的,则调用`cycle_task`方法;如果是定时任务,则调用`timing_task`方法。 - **日志记录**:通过`write_log`方法记录任务的执行情况,方便后续分析问题。 - **周期任务与定时任务的处理**:`cycle_...

    Qt定时任务

    `QTimer`提供了一个简单且灵活的方式来执行一次性的或周期性的任务。让我们详细了解一下如何使用`QTimer`: 1. **创建QTimer对象**:首先,你需要创建一个`QTimer`对象。这可以通过在类成员中声明或在函数内部临时...

    ThreadXUserGuide.rar_ThreadX user guide_ThreadX-Lite_threadx_thr

    5. **定时器服务**:ThreadX提供了软件定时器,允许开发人员设置定时任务,这对于周期性任务和超时处理非常有用。 6. **队列和管道**:用于线程间的异步通信,它们提供了一种安全的数据传输方式,允许线程将数据...

    @scheduled任务调度使用详解及@scheduled与多线程和@Async异步任务结合使用

    在Spring Boot框架中,`@Scheduled`注解是用于实现定时任务的核心工具,它使得开发者可以轻松地在应用中设置周期性的任务执行。本篇文章将深入讲解`@Scheduled`的使用方法,以及如何将其与多线程和`@Async`异步任务...

    c#多线程线程池和异步编程

    【C#多线程线程池和异步编程】深入探讨 在.NET框架中,多线程编程是实现并发执行任务的...`Timer`适用于周期性任务;而异步编程则能提升程序的并发能力和用户体验。根据具体需求选择合适的方式,是多线程编程的关键。

    c++任务调度,支持cron表达式

    cron表达式是Unix/Linux系统中广泛使用的定时任务表达方式,用于定义周期性的任务执行时间。 Bosma::Scheduler库的设计可能包含以下几个核心概念: 1. **任务(Task)**:在Bosma::Scheduler中,任务是一个可执行...

    线程_Thread开发_源码

    2. 定时调度:ScheduledExecutorService可以用于定时或周期性地执行任务。 3. 优先级调度:Thread类提供了setPriority()方法设置优先级,但实际效果取决于操作系统的线程调度策略。 六、死锁与活锁 在多线程环境中...

    Spring3.0 mvc 定时器及多线程任务demo

    定时任务主要用于执行一些周期性的操作,如数据清理、报表生成、系统监控等。Spring提供了一个名为`@Scheduled`的注解,可以方便地将方法标记为定时任务。 1. **使用@Scheduled** - 首先,我们需要配置一个`Task...

    Android异步刷新UI多种实现方案

    在Android开发中,异步刷新UI是至关重要的,它能够保证用户界面的流畅性,避免因为长时间阻塞主线程导致的ANR(Application Not Responding)错误。本篇将详细介绍Asynctask、Handler+Thread以及TimerTask这三种常见...

    java_经典Sleep与异步同步并发编程

    `Timer` 可以用来安排一次性任务或者周期性重复任务。 #### 使用示例 ```java import java.util.Timer; import java.util.TimerTask; public class TimerExample { public static void main(String[] args) { ...

    C#精确定时函数,可实现ms级定时,误差不累积

    在这个例子中,`TimedActionAsync`方法会周期性地调用传入的动作`action`,并传入当前的间隔时间。`Task.Delay`方法在等待时不会阻塞线程,从而减少了误差积累的可能性。如果需要停止定时器,只需调用`...

    php_swoole_loader_2.2_73_zts_linux

    7. **定时器与延时任务**:内置定时器功能,可以设置定时任务和周期性任务,执行特定的回调函数。 8. **TCP/UDP长连接**:Swoole支持客户端和服务器之间的长连接,提高数据传输效率。 9. **任务队列与消息队列**:...

    android多线程多任务断点续传

    5. ExecutorService:Java提供的线程池服务,可以创建定长线程池,支持定时及周期性任务执行,更高效地管理和控制线程。 二、Android多任务处理 多任务处理是指在同一时间处理多个任务。在Android中,多任务处理...

    定时执行事件_FC函数库_V15版本.rar

    在IT领域,定时执行事件是程序设计中的一个重要概念,它涉及到如何在特定时间或周期性地触发某些操作。FC函数库则是一种集成了多种功能函数的代码库,为开发者提供了便利的工具,使得他们能够更高效地实现各种功能。...

    scheduler:基于轻量级 C++ boost 的任务调度器类

    本文将深入探讨基于C++ Boost库的轻量级任务调度器类,它为开发者提供了一种高效且灵活的方式来管理并执行异步任务。 首先,Boost库是一个非常受欢迎的C++库集合,它提供了大量用于提高开发效率和代码质量的工具。...

    C#多线程,线程同步 异步 学习

    线程池中的线程可以被用来执行异步操作,如I/O回调或定时任务。 线程同步和异步操作在多线程编程中至关重要。同步操作确保线程按照特定顺序执行,防止数据竞争。C#提供了多种同步机制,如`Mutex`、`Semaphore`、`...

    Android线程池管理的代码例子

    ScheduledExecutorService则是一种可以定时或延迟执行任务的线程池,特别适合于需要周期性执行任务的场景,例如定时刷新数据、定期发送心跳等。其方法`scheduleAtFixedRate`和`scheduleWithFixedDelay`可以实现定时...

    C++ Network Programming(ACE)

    ACE_Timer_Queue和ACE_Timer楔子类可以安排定时任务,这些任务可以在特定时间或周期性地执行,这对于实现心跳检测、超时处理等网络通信中的常见需求非常有用。 最后,ACE提供了对多种传输协议的支持,包括TCP、UDP...

    php_swoole_loader_2.2_php7.3_zts widows-x64版本

    4. **定时器(Timer)**:提供定时任务功能,可以设置定时回调函数,用于执行周期性任务。 5. **内存表(Memory Table)**:内存中的共享数据结构,可以在不同进程间共享数据,提高数据交换效率。 6. **进程管理...

    Smart Thread Pool

    - **定时任务**:配合Timer类,线程池可以实现周期性的任务执行。 - **异步操作**:与BeginInvoke和EndInvoke方法配合,实现非阻塞的异步操作。 5. **Smart Thread Pool的扩展** "Smart Thread Pool"可能是指一些...

Global site tag (gtag.js) - Google Analytics