ThreadPoolTask​​Scheduler正在2个线程上执行同一任务

时间:2019-10-01 12:39:22

标签: java spring multithreading task

我正在使用@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);
}

关于如何解决此问题的任何想法?

谢谢!

0 个答案:

没有答案