开发者

How to change the name of threads in an ExecutorService? [duplicate]

This question already has answers here: Naming threads and thread-pools of ExecutorService (20 answers) Closed 5 years ago.

I'm using开发者_如何学运维 an ExecutorService to execute some Callables, but the name of the threads are like fixed-pool-1-thread-1.

How I change the name of the threads? If it's not possible, there another way to execute Callables that I can set the name of threadS?


You'll have to use an ExecutorService implementation that allows you to set the ThreadFactory1 used to create threads, for example, ThreadPoolExecutor. Pass an instance that creates threads with the proper names.

There's also a handy class in commons-lang that allows to specify thread names with a pattern: BasicThreadFactory. This keeps you from having to create a ThreadFactory subclass just to provide the naming behavior.


Guava almost always has what you need. ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build() and pass it off to your ExecutorService.


A quick and dirty way;

public void run() {
    Thread.currentThread().setName(aName);
    doStuff();
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜