2

您好,我在一个函数中使用带有两个线程的线程池。

该功能被多个客户端同步调用。

在我正在使用的那个功能中

ExecutorService executor = Executors.newFixedThreadPool(2);

完成任务后,我将关闭执行程序。

executor.shutdown();

但是在日志中我有这样的行

[pool-120069-thread-1]

这是否意味着 120069 个池还活着,或者它只是对池进行编号的方式。即使在关闭它之后它继续编号?

4

1 回答 1

4

这是否意味着 120069 个池还活着,或者它只是对池进行编号的方式。

别担心,是后者。系统中创建的每个新池都会获得一个新的序列号,这意味着您已经创建了120069池,但可能之前的大多数120068池已经关闭。

另一方面,为每个方法调用创建一个线程池并不是一个好习惯,请考虑只使用一个池并在多个并发方法调用中重用它。此外,您可能不需要同步。但这取决于您的实际用例。

最后,您可能想awaitTermination()在关机后调用。shutdown()只是“关上了”池的大门,但正在运行的任务会继续运行。

于 2012-10-24T19:04:43.813 回答