2013-08-06 2 views
0

У меня есть специальный код для выполнения, когда поток пула начинает выполняться, а другой, когда он заканчивается.Пользовательская логика потока в Akka

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

Будет здорово сделать это в области потока. Я думаю о том, что я делаю в черту со всеми актерами, но в этой области инициализация происходит от актера. Я думаю, что у меня будет лучшая производительность, если я сделаю это по потоку.

Любое предложение будет оценено!

Благодаря

+0

Целью akka является то, что вы не должны думать о потоке низкого уровня. Однако, если вы действительно хотите это сделать, я бы структурировал вашу актерскую систему с помощью Actor A (обрабатывает вашу инициализацию и очистку), а затем создает своих собственных Actor Bs {работников для решения всего остального}. –

+0

Используйте приколотых актеров и исполнителя ниток-пул для ваших прикованных актеров. Диспетчер по умолчанию будет делиться участниками между потоками. – vitalii

ответ

0

Специально для очистки кода вы будете иметь проблемы, потому что нет крюка, который вы могли бы использовать. Я бы рекомендовал использовать жизненный цикл Actor для моделирования жизненного цикла вашего ресурса, т. Е. Создать одно соединение с БД при запуске актера и закрыть его в postStop. Затем вместо использования дескриптора базы данных ThreadLocal вы отправляете свои запросы БД к (пулу) участников. Не беспокойтесь о самих нитьях, это работа Акки.

Смежные вопросы