Будущее задание ExecutorService не отменяется

Я помещаю свои фьючерсы из ExecutorService в хэш-карту. Позже я могу позвонить в Futures и отменить его из хэш-карты. Хотя результат верен, позже я установил точки останова в процедуре Callable, как будто Future cancel () не дало эффекта. Я думаю, что это может быть случай двух разных ссылок здесь (даже при том, что идентификаторы ссылок указаны как одинаковые при указании точки останова), но мне было интересно, могут ли некоторые эксперты вмешаться. Вот как выглядит код:

ExecutorService taskExecutor = Executors.newCachedThreadPool();
Map <String, Future<Object>> results = new HashMap <String, Future<Object>>();      

Future<Object> future = taskExecutor.submit(new MyProcessor(uid));
results.put(uid, future);

Я разрешаю обработку продолжить (это цикл, который отправляет задачи по мере их поступления), и позже я могу попытаться отменить из внешнего источника, вызвав этот метод:

public static synchronized boolean cancelThread(String uid) {
    Future<Object> future = results.get(uid);
    boolean success = false;
    if (future != null) {
        success = (future.isDone() ? true : future.cancel(true));
        if (success)
            results.remove(uid);
    }
    return success;     
}

Но я все еще сталкиваюсь с "неотмененной" путь в MyProcessor.call () после того, как вызывается future.cancel () - то есть он на самом деле не отменяется.

Куда я иду с этим не так? Есть ли лучше было сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос