如何知道特定的Java类是否是线程安全的?

fir*_*y_0 -1 java multithreading thread-safety

  1. 是否所有不在 java.util.concurrent 下的类在多线程环境中都不安全?
  2. 如果第一点是错误的,你如何知道一个特定的类是否是线程安全的?

小智 5

  • 声称不在 java.util.concurrent 下的所有类在 Java 多线程环境中都是不安全的说法是不准确的。一个类是否是线程安全的取决于它的设计以及它如何处理多个线程的并发访问。Java 的 java.util.concurrent 包包含一组经过显式设计和测试以在多线程环境中正常工作的类。然而,Java 中还有许多其他类,无论是在标准库中还是在自定义代码中,如果正确使用并具有适当的同步机制,则可以在多线程环境中安全地使用它们。这些类可能没有明确标记为“线程安全”,但只要采取正确的预防措施,它们仍然可以安全地使用。
  • java.util.concurrent 中的类明确设计用于多线程使用,并非所有其他类本质上都是不安全的。您应该仔细查看类所使用的文档、源代码和同步机制,以确定它在多线程环境中使用是否安全。

  • 依靠源代码来告诉您一个类是否是线程安全的是值得怀疑的。如果 javadoc 没有提到线程安全,那么 Java SE 类的(未记录的)线程安全特性*可能*从一个版本更改为下一个版本。 (5认同)