【发布时间】:2013-11-28 20:45:12
【问题描述】:
我必须处理一组守护进程,每个守护进程都实现了一个监视服务。 我想要做的是,创建守护进程,激活它们,停用和删除。
在创建时我这样做是为了激活:
private void activateDaemon(Daemon daemon){
Thread thread = new Thread(){
@Override
public void run(){
daemon.processEvents();
}
};
thread.start();
}
现在可以了,但是如果我想停用并删除它们。 Deactivate 停止进程事件(与http://docs.oracle.com/javase/tutorial/essential/io/notification.html 中的方法相同)并且应该释放线程。删除应该只销毁守护进程。
我正在考虑使用线程池,但不确定实现和类型。我不想要一个固定的线程池,因为我不知道所需的守护进程的数量。缓存线程池似乎就足够了,但文档告诉我它只适用于“启动许多短期任务的应用程序”,而守护进程可能会运行很长时间。
如何安全地管理、激活和停用一组守护程序(监视服务)?
【问题讨论】:
-
您真的需要守护进程,还是可以使用在传统 Executor 中执行的独立任务(从已处理的事件生成)重新表述您的问题?
-
守护进程只是一个命名约定。 Daemon 是一个有 watchservice 的类,仅此而已。很抱歉造成混乱。
标签: java multithreading daemon watchservice