Как выполнить многопоточную итерацию коллекции, работая с предикатом - PullRequest
1 голос
/ 26 марта 2010

Ради абстракции, давайте предположим, что у меня есть

Map<Double, Collection<Employee>>

, где ключ - порог зарплаты.Или для людей, знакомых с коллекциями Google, это будет выглядеть как Multimap

. Я хочу выполнить поиск в базе данных по зарплате каждого сотрудника и, если она меньше порога зарплаты, удалить сотрудника из коллекции.Как я могу сделать это многопоточным способом, предпочтительно используя фиксированный исполнитель пула потоков?

Опять же, для опытных людей из коллекций Google, если это делается с помощью Predicate, который выполняет поиск в БД и фильтрует коллекцию, я был бы очень признателен.

1 Ответ

0 голосов
/ 26 марта 2010

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

Скорее используйте карту ввода и вывода. Пусть потоки проработают входную карту (для которой я бы использовал BlockingQueues в качестве коллекции) и запишем в выходную карту всех сотрудников, которые соответствуют вашему тесту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...