# cronix **Repository Path**: hhf002/cronix ## Basic Information - **Project Name**: cronix - **Description**: 移植 spring-framework 的 scheduling功能。可以解析 cron 表达式,TaskScheduler 移植了两个实现 ThreadPoolTaskScheduler 和 ConcurrentTaskScheduler,实现轻量级的任务调度功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-06 - **Last Updated**: 2024-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 背景 cronix是一个轻量级的定时任务类库,移植自Spring-Context 6.0.x的org.springframework.scheduling包,在非spring环境使用更轻量 ### 功能概述 1. 任务调度: - 2种任务调度机制,包括基于定时器的任务调度、基于线程池的任务调度等。 - 常用的调度类包括 ScheduledExecutorService、TaskScheduler 和 CronTrigger。 2. TaskScheduler: - 是 Spring 提供的一个任务调度接口,用于调度一次性任务和周期性任务。 - 常用的实现类有 ThreadPoolTaskScheduler 和 ConcurrentTaskScheduler。 3. CronTrigger: - 是一个基于 Cron 表达式的触发器,用于定义复杂的时间调度规则。 - 位图表示(BitsCronField),使用位图(bitmask)来表示 Cron 表达式中的值。每个位对应一个可能的值,通过位运算来确定匹配的值,适用于表示范围较小的字段,如秒、分钟、小时等。 - 复合表示(CompositeCronField),由多个 CronField 实现组合而成,可以处理更复杂的表达式,如多个范围、列表和通配符。支持多种表达式组合,如 1,3,5-10 等 - 兼容Quartz的表示(QuartzCronField),用于处理 Quartz 兼容的 Cron 表达式字段,支持更多高级的 Cron 表达式特性,如 ? 通配符、L 表示最后一天等 4. 相比于cron4j,cronix支持异步任务、支持复杂的任务调度策略,支持到秒级的cron配置 ### 环境 理论上要求JDK9+,我是用的是JDK-17。核心代码很精炼,如果有jdk8需求,也可以很迅速的适配到jdk8 ### 依赖 见pom.xml ### 使用方法 使用方法见单元测试部分。单元测试代码有主线程不死逻辑,所以Maven打包时需跳过测试(Skip Tests)代码 ```mvn # 跳过测试的执行,但仍然编译测试代码 mvn clean install -DskipTests # 完全跳过测试代码的编译和执行 mvn clean install -Dmaven.test.skip=true ```