如何取消ThreadPoolTask​​Executor任务

时间:2020-04-09 14:30:16

标签: java spring

我已向Range const doc = context.document; const secs = doc.sections; secs.load("items"); await context.sync(); //console.log(secs.items.length.toString()); const nrSecs = secs.items.length - 1; const sect = secs.items[nrSecs]; const secPrev = secs.items[nrSecs-1]; //console.log(sect.isNullObject); var sectRng = sect.body.getRange("Content"); const secStart = secPrev.body.getRange("End"); var sectAll = secStart.expandTo(sectRng); sectAll.delete (); await context.sync(); 提交了工作:

Spring

现在我想取消一些工作。我有可运行对象,它没有ThreadPoolTaskExecutor方法,因为线程是由执行者管理的。但是我找不到在 @Autowired private ThreadPoolTaskExecutor taskExecutor; private Map<String,Runnable> runningTasks = new HashMap<>(); public String doSomeTask() { Runnable job = new MyJob(); String id = RandomStringUtils.randomAlphanumeric(32); taskExecutor.execute(job); runningTasks.put(id, job); return id; } 上取消给定作业的方法。

我遗漏了明显的东西还是执行错误的执行程序?

1 个答案:

答案 0 :(得分:1)

我什至没有编译,但是这个想法与上面daniu和Savior的评论非常相似,

更改地图

//private Map<String,Runnable> runningTasks = new HashMap<>();
private Map<String,Future<?>> runningTasks = new HashMap<>();

使用提交来运行任务,

//taskExecutor.execute(job);
runningTasks.put(id, taskExecutor.submit(job));

然后,当您需要取消任务时,只需从地图上获取它,然后

runningTasks.get(id).cancel(true);