Последовательность операций над конкретным объектом в ThreadPool Executor - PullRequest
0 голосов
/ 09 марта 2011

У нас есть ThreadPoolExecutor, который вытягивает задачи из очереди для выполнения. Для данного типа объекта, напр. Пользователь, мы можем иметь параллельные операции, происходящие в разных экземплярах. Однако операции с одним экземпляром должны выполняться по порядку.

Пул потоков не может гарантировать этого, поскольку два элемента, вставленные последовательно, могут выполняться в недетерминированном порядке из-за планирования потоков. Я не вижу средства для достижения этой цели - это стандартные библиотеки Java. Есть ли стороннее решение, которое предоставляет такую ​​возможность.

Мы можем реализовать это сами, но это довольно сложный вопрос, и я бы предпочел перейти к усиленному решению на этом этапе.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 марта 2011

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

0 голосов
/ 09 марта 2011

Вы можете создать очередь для каждого объекта и добавить задачу в ThreadPoolExecutor для выполнения следующей задачи для этого объекта. Чтобы гарантировать, что задачи не выполняются одновременно с объектом, вы можете заблокировать объект или очередь при этом.

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