On Thu, 19 Nov 2020 14:24:18 GMT, Alan Bateman <al...@openjdk.org> wrote:
> This change terminally deprecates the following methods defined by > java.lang.ThreadGroup > > - stop > - destroy > - isDestroyed > - setDaemon > - isDaemon > > The stop method has been deprecated since=1.2 because it is inherently > unsafe. It is time to terminally deprecate this method so it can be removed > in a future release. Thread.stop will be examined in a separate issue. > > The destroy, isDestroyed, setDaemon, isDaemon methods support the mechanism > to explicitly or automatically destroy a thread group. As detailed in > JDK-8252885, the mechanism to destroy thread groups is flawed and racy. > Furthermore, this mechanism inhibits efforts to drop the reference from a > thread group to its threads (so that thread creation, starting and > termination do not need to coordinate with their thread group). These methods > should be terminally deprecated so they can be degraded in a future release > and eventually removed. > > CSR with more information: https://bugs.openjdk.java.net/browse/JDK-8256644 src/java.base/share/classes/java/lang/ThreadGroup.java line 191: > 189: * @deprecated Destroying a thread group and its subgroups is not an > atomic > 190: * operation and is inherently racy with respect to > threads that > 191: * have been created but not have started. The concept > of daemon "a daemon group" sounds better to me. src/java.base/share/classes/java/lang/ThreadGroup.java line 208: > 206: * @deprecated Destroying a thread group and its subgroups is not an > atomic > 207: * operation and is inherently racy with respect to > threads that > 208: * have been created but not have started. The ability > to explicitly "have not started" src/java.base/share/classes/java/lang/ThreadGroup.java line 237: > 235: * @deprecated Destroying a thread group and its subgroups is not an > atomic > 236: * operation and is inherently racy with respect to > threads that > 237: * have been created but not have started. The concept > of daemon same comment as above - "a daemon group" src/java.base/share/classes/java/lang/ThreadGroup.java line 790: > 788: * @deprecated Destroying a thread group and its subgroups is not an > atomic > 789: * operation and is inherently racy with respect to > threads that > 790: * have been created but not have started. The ability > to explicitly "have not started" ------------- PR: https://git.openjdk.java.net/jdk/pull/1318