@Autowired
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
private ScheduledFuture<?> future;
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
return new ThreadPoolTaskScheduler();
}
传任务的 id,然后开启对应的任务
public void taskStartService(int id){
try {
Optional<Task> taskOptional = taskRepository.findById(id);
if (taskOptional.isPresent()) {
future = threadPoolTaskScheduler.schedule(() -> {
System.out.println("task-" + id + ", " + Thread.currentThread().getName() + "-" + Thread.currentThread().getId());
threadMap.put(id, future);
}
}, new CronTrigger(taskOptional.get().getTaskTime()));
}
然后我启动了 2 个任务,打印出来确实 2 个任务都在运行,但是为什么线程打印出来只有 1 个线程在跑呢
task-1, threadPoolTaskScheduler-1-54
task-2, threadPoolTaskScheduler-1-54
实在是不会了,请大佬给点提示
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.