我必须处理一组守护进程,每个守护进程都实现了一个监视服务。我想要做的是,创建守护进程,激活它们,停用和删除。
在创建的那一刻,我这样做是为了激活:
private void activateDaemon(Daemon daemon){
Thread thread = new Thread(){
@Override
public void run(){
daemon.processEvents();
}
};
thread.start();
}
现在这有效,但如果我想停用并删除它们。Deactivate 停止 processevents(与http://docs.oracle.com/javase/tutorial/essential/io/notification.html中的方法相同)并且应该释放线程。删除应该只是破坏守护程序。
我正在考虑使用线程池,但不确定实现和类型。我不想要一个固定的线程池,因为我不知道所需的守护进程的数量。缓存线程池似乎就足够了,但文档告诉我它只适用于“启动许多短期任务的应用程序”,而守护进程可能会运行很长时间。
我将如何最好地安全地管理、激活和停用一组守护程序(监视服务)?