RFR: 8289610: Degrade Thread.stop

Roger Riggs rriggs at openjdk.org
Tue Sep 13 14:12:48 UTC 2022


On Fri, 9 Sep 2022 12:44:31 GMT, Alan Bateman <alanb at openjdk.org> wrote:

> Degrade Thread.stop to throw UOE unconditionally, deprecate ThreadDeath for removal, and remove the remaining special handling of ThreadDeath from the JDK.
> 
> Thread.stop is inherently unsafe and has been deprecated since JDK 1.2 (1998) with a link to a supplementary page that explains the rationale. Some of the API surface has already been degraded or removed: Thread.stop(Throwable) was degraded to throw UOE in Java 8 and removed in Java 11, and ThreadGroup.stop was degraded to throw UOE in Java 19. As of Java 19, the no-arg Thread.stop continues to work as before for platform threads but throws UOE for virtual threads. The next step in the glacial pace removal is the degrading of the no-arg Thread.stop method to throw UOE for all threads.
> 
> To keep things manageable, the change proposed here leaves JVM_StopThread in place. A separate issue will remove it and do other cleanup/removal in the VM. We have another JBS issue for the updates to the JLS and JVMS where asynchronous exceptions are defined. There is also some remaining work on a test class used by 6 jshell tests - if they aren't done in time then we will temporarily exclude them.
> 
> The change here has no  impact on the debugger APIs (JVM TI StopThread, JDWP ThreadReference/Stop, and JDI ThreadReference.stop). Debuggers can continue to cause threads to throw an asynchronous exception, as might be done when simulating code throwing an exception at some point in the code.

core-libs parts look fine.

src/java.base/share/classes/java/lang/Thread.java line 1635:

> 1633:      *
> 1634:      * @throws  UnsupportedOperationException
> 1635:      *          always

fold with previous line.

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

PR: https://git.openjdk.org/jdk/pull/10230



More information about the client-libs-dev mailing list