DocumentBuilderFactory在Java 5+;中是线程安全的吗;?
forDocumentBuilderFactory在Java 5+;中是线程安全的吗;?,java,multithreading,jaxp,Java,Multithreading,Jaxp,forjavax.xml.parsers.DocumentBuilderFactory中明确指出: DocumentBuilderFactory类的实现不能保证线程安全。由用户应用程序确保从多个线程使用DocumentBuilderFactory。或者,应用程序每个线程可以有一个DocumentBuilderFactory实例。应用程序可以使用同一工厂实例来获取DocumentBuilder的一个或多个实例,前提是工厂实例一次不在多个线程中使用 然而,文件和文档却没有这样说。DocumentBu
javax.xml.parsers.DocumentBuilderFactory
中明确指出:
DocumentBuilderFactory类的实现不能保证线程安全。由用户应用程序确保从多个线程使用DocumentBuilderFactory。或者,应用程序每个线程可以有一个DocumentBuilderFactory实例。应用程序可以使用同一工厂实例来获取DocumentBuilder的一个或多个实例,前提是工厂实例一次不在多个线程中使用
然而,文件和文档却没有这样说。
DocumentBuilderFactory现在是线程安全的了吗,还是Sun认为警告太过分了,大家应该更清楚了?因为如果不告诉我钱是线程安全的话,那么让它线程安全的味道会非常差。您可以自己使用断点来测试这一点。根据singleton的文档,newInstance方法没有同步化,然后DocumentBuilderFactory在Java 8中仍然不是线程安全的。。。都不在。实际上,构造函数自Java 1.4以来没有改变。可能的重复不是重复,问题是多线程使用同一工厂构造DocumentBuilder是否安全,而不是尝试使用同一生成器解析多个文档是否安全。一个方法不需要“同步”即可实现线程安全。