Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
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(){

    @Override

    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

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...