On Mon, 23 May 2022 06:09:58 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> Alan Bateman has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Remove spurious colon
>
> test/jdk/com/sun/management/HotSpotDiagnosticMXBean/DumpThreads.java line 115:
> 
>> 113: 
>> 114:                 // find the thread container that corresponds to the 
>> executor
>> 115:                 String name = Objects.toIdentityString(executor);
> 
> I don't understand the need for `toIdentityString()` rather than just 
> `toString()`

The implementation lends on the string returned by Object::toString when not 
overridden. In this case, either will do so I can change it to toString.

> test/lib/jdk/test/lib/threaddump/ThreadDump.java line 179:
> 
>> 177:                 return this;
>> 178:             if (name().startsWith(name + "/"))
>> 179:                 return this;
> 
> It's not clear to me why this is here. What does it mean if the name of the 
> container starts with `<name>/`?

With the exception of the root container, the names have the form "name1/name2" 
where name1 is the "external name" and name2 identifies the internal thread 
grouping.  The external name is the object identity for thread pools and 
thread-per-executors created by user code. In time we may expose ways to 
provide a name.

> test/lib/jdk/test/lib/threaddump/ThreadDump.java line 299:
> 
>> 297: 
>> 298:             // add to map if not already encountered
>> 299:             var container = map.computeIfAbsent(name, k -> new 
>> ThreadContainer(name));
> 
> Why might the container already be in `map`?

They aren't topologically sorted so it's possible to encounter a thread 
container before its parent.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8784

Reply via email to