gpt4 book ai didi

java - 为什么使用 java.lang.ThreadGroup 不安全?

转载 作者:行者123 更新时间:2023-11-30 04:13:53 25 4
gpt4 key购买 nike

我正在寻找最佳实践,并且正在将 PMD 应用到我的 Java EE 项目中,但一条规则表明我必须避免使用 java.lang.ThreadGroup,而我现在正在使用它。

规则说这是不安全的,我想知道:为什么?谢谢

最佳答案

出于安全原因使用ThreadGroup的概念已被放弃,因为Thread(Group)与其正在执行的实际代码之间没有可控的关系。即使是最有特权的线程也可能运行不安全的代码,从而将该代码提升到不期望的级别。因此,正在执行的代码本身(及其来源)用于决定它拥有哪些权限。因此执行线程及其组不会以任何方式对安全发挥任何作用。

因此,在此之后,ThreadGroup 不再提供任何实际功能。它只是变得过时了,仅出于历史原因而被维护。唯一无法使用的功能是 uncaughtException(Thread t, Throwable e)。但从 Java 5 开始,有了 Thread.setUncaughtExceptionHandler( UncaughtExceptionHandler),所以现在即使没有线程组也可以工作。

是的,很多 ThreadGroup 方法都不是线程安全的,并且没有尝试修复它们,只是因为它们已经过时了。

Joshua Bloch 在《Effective Java》中写道:

Thread groups are best viewed as an unsuccessful experiment, and you should simply ignore their existence.

关于java - 为什么使用 java.lang.ThreadGroup 不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com