【发布时间】:2013-06-12 02:48:04
【问题描述】:
在我的一个库中,我使用具有 5 个线程的固定线程池执行器;我的线程不是重量级的,我.get() 有超时,但至于ExecutorService,我创建它,然后,这是“生死攸关”。
完成后你应该.shutdown{,Now}()它;但这是一个库,我无法提前知道如何使用它:使用简单的main(),在将由 servlet 容器等管理的 web 应用程序中。
这感觉不对。我怎样才能做得更好?我应该只使用ExecutorService以外的其他东西吗?
EDIT 链接到唯一用户:here;守护线程可能是一个解决方案,现在我不知道它们是否有我应该注意的缺点......
【问题讨论】:
-
IMO,它在客户端(您的 API 调用者)上关闭服务,因为您的库是 有状态的。当然,守护线程可以解决一些问题,但这可能不是您想要的,因为在所有非守护线程都停止后它们会自动死亡。是否可以将接口共享到您的库?
-
@home 链接到唯一使用它的类:here。 “用户端”类,
MessageBundle,可以是private static final——其实我一直都是这样用的
标签: java threadpool shutdown-hook