Java ExecutorService作为实现细节

时间:2017-11-08 06:13:29

标签: java concurrency executorservice

我正在开发一个小库,它在一组对象的每个成员上调用一个回调。理想情况下,我希望这些任务是并发的,所以我在我的类中创建了一个ExecutorService。它是一个私有字段,理想情况下用户不需要知道我的类有ExecutorService。

然而,我读到ExecutorServices在使用后需要shutdown()或程序不会退出。但是,私有ExecutorService是作为我的库中的静态初始化程序的一部分创建的。我的图书馆不知道应用程序何时完成工作,因此无法在ExecutorService上调用shutdown()。并且库用户可能不知道ExecutorService存在,即使他们这样做,他们也无法在其上调用shutdown(),因为它是私有的。

我如何解决这个难题?

1 个答案:

答案 0 :(得分:2)

更好的方法可能是让您的库的用户注入(并管理)ExecutorService。您的库无法决定使用何种服务(例如,要使用多少线程)。这个决定最终是您的库的用户之一,他们更好地了解应用程序的整个生命周期以及它所部署的环境。