如何更改ExecutorService中的线程名称?

时间:2011-05-25 14:34:15

标签: java multithreading executorservice

我正在使用ExecutorService来执行一些Callables,但是线程的名称就像fixed-pool-1-thread-1。

我如何更改线程的名称?如果不可能,还有另一种执行Callables的方法,我可以设置threadS的名称吗?

2 个答案:

答案 0 :(得分:13)

您必须使用ExecutorService实现,该实现允许您设置用于创建线程的ThreadFactory 1,例如ThreadPoolExecutor。传递一个创建具有正确名称的线程的实例。

在commons-lang中还有一个方便的类,允许使用模式指定线程名称:BasicThreadFactory。这使您不必创建ThreadFactory子类只是为了提供命名行为。

答案 1 :(得分:5)

番石榴几乎总是拥有你need的东西。 ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()并将其传递给您的ExecutorService