org.elasticsearch.common.thread
Class ThreadRenamingRunnable

java.lang.Object
  extended by org.elasticsearch.common.thread.ThreadRenamingRunnable
All Implemented Interfaces:
java.lang.Runnable

public class ThreadRenamingRunnable
extends java.lang.Object
implements java.lang.Runnable

A Runnable that changes the current thread name and reverts it back when its execution ends. To change the default thread names set by Netty, use setThreadNameDeterminer(ThreadNameDeterminer).


Constructor Summary
ThreadRenamingRunnable(java.lang.Runnable runnable, java.lang.String proposedThreadName)
          Creates a new instance which wraps the specified runnable and changes the thread name to the specified thread name when the specified runnable is running.
 
Method Summary
static ThreadNameDeterminer getThreadNameDeterminer()
          Returns the ThreadNameDeterminer which overrides the proposed new thread name.
 void run()
           
static void setThreadNameDeterminer(ThreadNameDeterminer threadNameDeterminer)
          Sets the ThreadNameDeterminer which overrides the proposed new thread name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ThreadRenamingRunnable

public ThreadRenamingRunnable(java.lang.Runnable runnable,
                              java.lang.String proposedThreadName)
Creates a new instance which wraps the specified runnable and changes the thread name to the specified thread name when the specified runnable is running.

Method Detail

getThreadNameDeterminer

public static ThreadNameDeterminer getThreadNameDeterminer()
Returns the ThreadNameDeterminer which overrides the proposed new thread name.


setThreadNameDeterminer

public static void setThreadNameDeterminer(ThreadNameDeterminer threadNameDeterminer)
Sets the ThreadNameDeterminer which overrides the proposed new thread name. Please note that the specified ThreadNameDeterminer affects only new ThreadRenamingRunnables; the existing instances are not affected at all. Therefore, you should make sure to call this method at the earliest possible point (i.e. before any Netty worker thread starts) for consistent thread naming. Otherwise, you might see the default thread names and the new names appear at the same time in the full thread dump.


run

public void run()
Specified by:
run in interface java.lang.Runnable