我正在使用ExecutorService来执行一些Callables,但是线程的名称就像fixed-pool-1-thread-1。
我如何更改线程的名称?如果不可能,还有另一种执行Callables的方法,我可以设置threadS的名称吗?
答案 0 :(得分:13)
您必须使用ExecutorService
实现,该实现允许您设置用于创建线程的ThreadFactory
1,例如ThreadPoolExecutor
。传递一个创建具有正确名称的线程的实例。
在commons-lang中还有一个方便的类,允许使用模式指定线程名称:BasicThreadFactory
。这使您不必创建ThreadFactory
子类只是为了提供命名行为。
答案 1 :(得分:5)
番石榴几乎总是拥有你need的东西。 ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()
并将其传递给您的ExecutorService
。