[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-core-libs-dev
Subject: Re: RFR: 8290036: Define and specify Runtime shutdown sequence [v7]
From: Alan Bateman <alanb () openjdk ! org>
Date: 2022-08-29 8:23:27
Message-ID: 5dksriRuuZ4zEr_XQTk9zVcJ2Y77KoX9POg8H40IMtI=.b5e1ea74-dfb0-413a-b731-47f7d7106351 () github ! com
[Download RAW message or body]
On Sun, 28 Aug 2022 22:20:03 GMT, David Holmes <dholmes@openjdk.org> wrote:
> > src/java.base/share/classes/java/lang/Thread.java line 70:
> >
> > > 68: * The newly started thread invokes the task's {@link Runnable#run() run} \
> > > method.
> > > 69: *
> > > 70: * <p> A platform thread <i>terminates</i> if either its {@code run} method \
> > > completes
> >
> > I don't think the update in 9796557d works. It switches to talking about the \
> > termination of platform threads before we've introduced what a platform thread \
> > is. It also switches to talking about the Thread.run method when the focus in the \
> > previous paragraph has been the the task that the thread executes. If we really \
> > need this here then the second paragraph will need to explain that it is also \
> > possible to extend Thread and override the run method.
>
> I don't think we need to distinguish between platform and virtual threads here at \
> all. Isn't it the case that virtual threads also have a run() method and they too \
> terminate when run() completes as described (together with UEH)? The fact most \
> Thread run() methods call something else's run() method is immaterial. We don't \
> know what a run() method will do, but whatever it is once it completes then the \
> thread has terminated.
There are subtle differences (invoking a virtual Thread's run method directly does no \
nothing) but that is too much detail and would confusing to say anything about in the \
introduction paragraphs.
The following is closer to what I think we should have. The existing paragraph 2 \
describes starting a thread so this is where the Thread.run method is introduced. \
Paragraph 3 follows to describe termination.
* <p> {@code Thread} defines constructors and a {@link Builder} to create threads.
* {@linkplain #start() Starting} a thread schedules the newly started thread to \
execute
* its {@link #run() run} method. The thread executes concurrently with the thread \
that
* caused it to start.
*
* <p> A thread <i>terminates</i> if either its {@code run} method completes \
normally,
* or if its {@code run} method completes abruptly and the appropriate {@linkplain
* Thread.UncaughtExceptionHandler uncaught exception handler} completes normally or
* abruptly. With no code left to run, the thread has completed execution. Thread
* defines the {@link #join() join} method to wait for a thread to terminate.
-------------
PR: https://git.openjdk.org/jdk/pull/9437
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic