RFR: 8371226: Thread class description needs section on Thread Interruption
Pavel Rappo
prappo at openjdk.org
Tue Nov 11 16:09:11 UTC 2025
On Mon, 10 Nov 2025 14:37:12 GMT, Alan Bateman <alanb at openjdk.org> wrote:
> This is docs only change to a add a new section to the Thread class description on Thread Interruption. The new section provides guidance on handling InterruptedException. A subset of that guidance is also proposed for the InterruptedException class description.
Thanks for taking care of this and for taking on board my earlier suggestion from a core-libs-dev thread not to use "reset" when talking about re-asserting interrupted status. I can see that you chose "restore" instead. This is much better and matches, for example, "Java Concurrency in Practice".
src/java.base/share/classes/java/lang/InterruptedException.java line 30:
> 28: /**
> 29: * Thrown when a thread executing a blocking method is {@linkplain Thread#interrupt()
> 30: * interrupted}. {@link Thread#sleep(long)}, {@link Object#wait()} and many other
I can see that you moved `Thread#sleep(long)` from `@see` to here. However, since the initial documentation was created, a few other `sleep` methods have been added. Consider using this "generic sleep" text instead (which is what you use in Thread anyway):
{@link Thread#sleep(long) Thread.sleep}
src/java.base/share/classes/java/lang/InterruptedException.java line 40:
> 38: * normally or handling it by throwing another type of exception. Code that throws a
> 39: * different type of exception with the {@code InterruptedException} as {@linkplain
> 40: * Throwable#getCause() cause} should also restore the interrupted status before
Here and in Thread: should we add that code that suppresses InterruptedException should also restore interrupted status before throwing the primary exception?
src/java.base/share/classes/java/lang/Thread.java line 197:
> 195: * java.nio.channels.InterruptibleChannel} is interrupted then it causes the channel to be
> 196: * closed, and the blocking I/O operation to throw {@link java.nio.channels.ClosedByInterruptException}
> 197: * with the thread's interrupted status set. If a thread is blocked in a {@linkplain
Suggestion:
* with the thread's interrupted status set. If a thread that is blocked in a {@linkplain
Otherwise that sentence reads really weird.
src/java.base/share/classes/java/lang/Thread.java line 202:
> 200: *
> 201: * <p> Code that doesn't invoke any interruptible methods can still respond to interrupt
> 202: * by polling the current thread's interrupt status with
Suggestion:
* by polling the current thread's interrupted status with
-------------
PR Review: https://git.openjdk.org/jdk/pull/28216#pullrequestreview-3448613289
PR Review Comment: https://git.openjdk.org/jdk/pull/28216#discussion_r2514740481
PR Review Comment: https://git.openjdk.org/jdk/pull/28216#discussion_r2514653869
PR Review Comment: https://git.openjdk.org/jdk/pull/28216#discussion_r2514793865
PR Review Comment: https://git.openjdk.org/jdk/pull/28216#discussion_r2514796925
More information about the core-libs-dev
mailing list