Java中的ScheduledExecutorService对于以固定间隔或固定延迟重复执行任务非常方便。我想知道是否有类似现有的ScheduledExecutorService的名称,它可以让您指定一天中的某个时间来安排任务,而不是指定一个间隔,即“我希望该任务在每天上午10点触发”。
我知道您可以使用Quartz实现此目的,但我宁愿不要使用该库(这是一个很棒的库,但出于某些原因我宁愿不依赖)。
ThreadPoolTaskScheduler,可以在不需要外部线程管理时使用。在内部,它委托给ScheduledExecutorService实例。ThreadPoolTaskScheduler 也 实现了 Spring 的TaskExecutor接口,因此单个实例可用于异步执行以及计划的和潜在的重复执行。
CronTrigger() 接受 cronExpression http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html
有关此解决方案的更多信息,请参阅 Spring 文档:https : //docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;
public class CronTriggerSpringTest{
public static void main(String args[]){
String cronExpression = "0/5 * * * * *";
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.initialize();
scheduler.schedule(new Runnable() {
@Override
public void run() {
System.out.println("Hello Date:"+new Date());
}
}, new CronTrigger(cronExpression));
}
}
Run Code Online (Sandbox Code Playgroud)
再多搜索一下,就会发现HA-JDBC 中的CronExecutorService 。有趣的是,它的CronExpression类依赖于 Quartz ,但仅此而已。那还不错。
更新:我已经修复了损坏的链接以指向新版本,但我不知道这是否是唯一的依赖项
| 归档时间: |
|
| 查看次数: |
8075 次 |
| 最近记录: |