我正在 Android 中实现 Java ThreadPoolExecutor。我需要停止并从我的池中删除正在运行的任务。
我已经通过使用 submit(Runnable) 和 Future.cancel() 方法实现了这一点。
提交任务的代码如下:
public Future<?> submitTask(Runnable runnableTask) throws CustomException {
if (runnableTask == null) {
throw new CustomException("Null RunnableTask.");
}
Future<?> future = threadPoolExecutor.submit(runnableTask);
return future;
}
submit() 返回的 Future 被传递给下面的方法。取消任务的代码如下:
public void cancelRunningTask(Future<?> future) throws CustomException {
if (future == null) {
throw new CustomException("Null Future<?>.");
}
if (!(future.isDone() || future.isCancelled())) {
if (future.cancel(true))
MyLogger.d(this, "Running task cancelled.");
else
MyLogger.d(this, "Running task cannot be cancelled.");
}
}
问题:任务实际上并未取消。请让我知道我错在哪里。任何帮助,将不胜感激。