RFR: 8290036: Define and specify Runtime shutdown sequence [v2]

Alan Bateman alanb at openjdk.org
Thu Aug 4 10:03:13 UTC 2022


On Thu, 4 Aug 2022 02:51:03 GMT, Stuart Marks <smarks at openjdk.org> 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


More information about the core-libs-dev mailing list