RFR 8010182: Thread safety of Thread get/setName()

Mike Duigou mike.duigou at oracle.com
Tue May 21 05:07:44 UTC 2013


Looks good.

Since the char array is never modified it could use the String(char[], boolean) constructor. This has advantages for cases such as logging which may read the thread name very many times.

Mike

On May 18 2013, at 00:57 , Chris Hegarty wrote:

> Thread getName and setName are not thread-safe. The "expected" usage is to set a name before starting the thread and only read it thereafter.
> 
> It is desirable to support the setting of thread name dynamically, mainly for monitoring/management/debugging. The typical scenario is the single-writer, multiple-reader case. So, making name volatile is sufficient. However, setName also sets the native thread name. This is currently restricted to the current thread, since there could be a race if the thread is terminating. Making setName synchronized would eliminate that race, and allow for the native thread name to be set from other threads.
> 
> This issue came up on c-i a while back [1].
> 
> http://cr.openjdk.java.net/~chegar/8010182/webrev.00/webrev/
> 
> -Chris.
> 
> [1] http://cs.oswego.edu/pipermail/concurrency-interest/2013-March/010935.html




More information about the core-libs-dev mailing list