Прервать RecursiveTask с заданным результатом?

Я столкнулся со следующей проблемой:

Я взаимодействую с ConcurrentHashMap с помощью RecursiveAction для разделения и завоевания карты.

Проблема в том, что мне нужно вернуть первый результат, найденный для определенного критерия, или, если ничего не найдено, мне нужно вернуть ноль, когда все «разделенные задачи» выполнены.

На данный момент (из-за того, что я использую RecursiveAction вместо RecursiveTask) я могу просто вызвать метод и выполнить «return;» когда задача нашла совпадение, но это очень плохо пахнет.

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

Есть ли возможность вернуть данный результат и отменить задачу, чтобы предотвратить дальнейшую обработку с помощью RecursiveTask?


person user2874177    schedule 21.03.2015    source источник
comment
Это должно быть просто - просто не создавать никаких подзадач?   -  person user253751    schedule 21.03.2015
comment
как ты это имеешь в виду? нет вилки/присоединения?   -  person user2874177    schedule 21.03.2015


Ответы (1)


Возможно, этот старый SO answer поможет. Это форма «короткого замыкания», и вам нужно делать все это самостоятельно. Или вы можете использовать пакет из другого.

person edharned    schedule 21.03.2015