【发布时间】:2012-04-07 08:48:23
【问题描述】:
javax.xml.parsers.DocumentBuilderFactory 的 Java 1.4 doc 明确表示:
不保证 DocumentBuilderFactory 类的实现是线程安全的。由用户应用程序确保从多个线程使用 DocumentBuilderFactory。或者,应用程序可以为每个线程拥有一个 DocumentBuilderFactory 实例。应用程序可以使用工厂的同一个实例来获取 DocumentBuilder 的一个或多个实例,前提是该工厂的实例一次不被多个线程使用。
但是,Java 5 和 Java 6 文档没有提及此类内容。 DocumentBuilderFactory 现在是线程安全的吗,还是 Sun 只是认为警告太过分了,人们应该知道得更多?
【问题讨论】:
-
不是重复的,问题是多个线程使用同一个工厂构造 DocumentBuilders 是否安全,而不是尝试使用同一个构建器解析多个文档是否安全.
-
@DavidMoles 你得出结论了吗? Java 8 文档说
Once an application has obtained a reference to a DocumentBuilderFactory it can use the factory to configure and obtain parser instances. -
@mukund 我从来没有这样做过,但我浏览了一下源代码,我会说它可能不安全。请参阅我刚刚添加的answer。
标签: java multithreading jaxp