Какой лучший способ спящего актера? У меня есть актеры, созданные как агенты, которые хотят поддерживать разные части базы данных (включая получение данных из внешних источников). По ряду причин (в том числе не перегружая базу данных или сообщений и общую нагрузку), я хочу, чтобы участники спали между каждой операцией. Я смотрю на что-то вроде 10 объектов-актеров.
Актеры будут работать довольно много бесконечно, так как всегда будут появляться новые данные или сидеть в таблице, ожидающей распространения в других частях базы данных и т.д. Идея заключается в том, чтобы база данных была как можно более полной в любой момент времени.
Я мог бы сделать это с помощью бесконечного цикла и спать в конце каждого цикла, но в соответствии с http://www.scala-lang.org/node/242 участники используют пул потоков, который расширяется всякий раз, когда блокируются все потоки. Поэтому я думаю, что Thread.sleep в каждом актере будет плохой идеей, так как ненужные ненужные потоки.
Возможно, у меня мог бы быть центральный актер со своей собственной петлей, которая отправляет сообщения подписчикам на часы (например, наблюдатели часов асинхронных событий)?
Кто-нибудь делал что-либо подобное или имел какие-то предложения? Извините за дополнительную (возможно, лишнюю) информацию.
Приветствия
Джо