java - 从 ThreadPoolTaskScheduler 池 Spring 中删除任务
问题描述
我正在使用 ThreadPoolTaskScheduler 和 Scheduler 来创建任务,但是当我设置一个新任务时,我想删除其中的某个或全部,我该怎么做?
@Bean
public ThreadPoolTaskScheduler createThreadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix(threadPrefix);
threadPoolTaskScheduler.initialize();
return threadPoolTaskScheduler;
}
添加任务:
private final Scheduler scheduler;
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
public void addTask(){
FixedRateTask update = new FixedRateTask(this::executeOnRateMethod
, initialDelay, waitTime);
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
scheduler.setTask(taskRegistrar.scheduleFixedRateTask(update));
}
似乎在调用:
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
taskRegistrar.scheduleFixedRateTask(update);
每次都将线程添加到池中,取消调度程序也不起作用:
scheduler.getTask().cancel();
解决方案
当你安排了一个 future时,ScheduledFuture<?>
将返回。 ScheduledFuture<?>
has scheduledFuture.cancel(false)
,它将取消你放在执行器中的计划任务。
推荐阅读
- r - 在 R 中使用 int64 nanotimes 作为数组 dimnames
- linguijs - 从 webtranslateit.com 为 LinguiJS 选择哪种目录格式可以与复数一起使用?
- java - 有没有办法在android studio(java)中覆盖文本
- cloudinary - AssertionError [ERR_ASSERTION]:无法包装非错误对象
- css - 在 Wordpress 导航菜单中的文本上添加圆角矩形 css
- java - Selenium java代码成功运行测试,但在无头运行时失败
- android - viewPager 和数据绑定 android
- java - 如何在浏览器中从excel中一一读取和运行多个URL
- android - 我无法从 android 的下载文件夹中获取文档
- python - 使用 NumPy 和 PyTorch 在 GPU 上求解线性方程