我正在使用@Scheduled Spring注释来计划带有cron表达式的任务。因为代码是沿着服务器实例运行的,所以使用Zookeeper协调了这些任务。另外,我将调度程序设置为具有2个线程而不是1个线程。
在每个任务的开始处都有一个信号灯。等待锁一段时间后,线程将继续丢弃任务。
问题是我可以看到两个线程都试图获取锁,而我真正想要的是每个任务每个threadPool只执行一次。
这是我的SchedulerConfig
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(2);
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
关于如何解决此问题的任何想法?
谢谢!