我使用ExecutorService处理来自多个线程的任务请求,并使用从ExecutorService#submit()返回的Future来跟踪任务的进度。
我想删除请求,并在超时后给请求者一个反馈,如果他们的请求还没有被处理。
因此,我想知道当前是否正在处理任务请求,如果正在处理,我将等待它完成,否则我将取消它并向请求者提供反馈。
任何帮助和提示都将不胜感激。谢谢!
发布于 2013-01-09 08:22:30
要回答这个问题已经太晚了,但是为什么你不定义你的任务,让它具有某种不稳定的"isStarted“标志呢?然后,您可以在catch子句中查询标志。
发布于 2011-11-10 19:07:33
如果您使用Future.cancel(false),它将允许任务在已经启动的情况下运行到完成。即使你使用cancel(true),它也可能会这样做,除非talk执行了一个可中断的操作,或者你检查了中断标志。
我怀疑您不需要知道任务是否已经开始。即使您使用此方法,也有可能任务在您检查时尚未启动,但在您尝试取消它时已启动。
发布于 2014-07-04 16:04:14
我知道这是一个老问题,但是使用Future.isDone()又如何呢?
https://stackoverflow.com/questions/8078161
复制相似问题