Мне приходится обрабатывать группу демонов, каждый из которых реализует службу наблюдения. Что я хочу сделать, так это создать демонов, активировать их, деактивировать и удалить.
На данный момент при создании я делаю это, чтобы активировать:
private void activateDaemon(Daemon daemon){
Thread thread = new Thread(){
@Override
public void run(){
daemon.processEvents();
}
};
thread.start();
}
Теперь это работает, но если я хочу деактивировать и удалить их. Деактивация останавливает события процесса (тот же метод, что и в http://docs.oracle.com/javase/tutorial/essential/io/notification.html ) и должен освободить поток. Удаление должно просто уничтожить демона.
Я думаю об использовании пула потоков, но не уверен в реализации и типе. Мне не нужен фиксированный пул потоков, так как я не знаю количество нужных демонов. Кэшированный пул потоков кажется достаточным, но в документации мне сказано, что он подходит только для «приложений, которые запускают множество краткосрочных задач», в то время как демон может работать долго.
Как мне лучше всего безопасно управлять, активировать и деактивировать группу демонов (сервисов наблюдения)?