Explore Courses Blog Tutorials Interview Questions
0 votes
in Java by (10.2k points)

Let's say I have an application that utilizes the Executor framework as such

Executors.newSingleThreadExecutor().submit(new Runnable(){


    public void run(){

        // do stuff



When I run this application in the debugger, a thread is created with the following (default) name: Thread[pool-1-thread-1]. As you can see, this isn't terribly useful and as far as I can tell, the Executor framework does not provide an easy way to name the created threads or thread-pools.

So, how does one go about providing names for the threads/thread-pools? For instance, Thread[FooPool-FooThread].

1 Answer

0 votes
by (46k points)

You could provide a ThreadFactory to newSingleThreadScheduledExecutor(ThreadFactory threadFactory). The factory will be responsible for creating threads and will be able to name them.

To extract the Javadoc:

Building new threads

New threads are created using a ThreadFactory. If not otherwise specified, an Executors.defaultThreadFactory() is used, which creates threads to all be in the same ThreadGroup and with the same NORM_PRIORITY priority and non-daemon status. By supplying a different ThreadFactory, you can alter the thread's name, thread group, priority, daemon status, etc. If a ThreadFactory fails to create a thread when asked by returning null from new thread, the executor will continue, but might not be able to execute any tasks

Related questions

Browse Categories