On Thu, 4 Aug 2022 02:51:03 GMT, Stuart Marks <[email protected]> wrote:
>> src/java.base/share/classes/java/lang/Runtime.java line 79:
>>
>>> 77: * terminate the JVM via the {@link #halt halt} method.
>>> 78: * <h2><a id="termination">Virtual Machine Termination</a></h2>
>>> 79: * When the JVM terminates, all threads (daemon, non-daemon, and
>>> shutdown hooks) are immediately
>>
>> "daemon, non-daemon, and shutdown hooks" reads like there are 3 kinds of
>> threads. I would be tempted to drop "shutdown hooks" from this list or else
>> phrase it as "all shutdown hooks and all other threads".
>
> Alex and I discussed this and we felt that it was important to call out all
> three "kinds" of threads explicitly. Earlier versions of the text implied
> that no non-daemon threads were running at the time the VM terminated, which
> might not be true. Earlier text also implied that shutdown hooks had
> terminated before the VM terminated, but this isn't necessarily true if
> somebody calls halt(). Yes, a shutdown hook has a daemon/non-daemon bit, but
> effectively it's ignored, and a shutdown hook is treated so specially that
> it's effectively a different kind of thread.
I understand but as currently worded the reader may wonder what
Thread::isDaemon might return when it invoked on Thread that is a shutdown
hook. I think the best I can suggest is to replace "daemon, non-daemon, and
shutdown hooks" with "shutdown hooks and other daemon and non-daemon threads".
-------------
PR: https://git.openjdk.org/jdk/pull/9437