首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java 5+中DocumentBuilderFactory是线程安全的吗?

在Java 5+中DocumentBuilderFactory是线程安全的吗?
EN

Stack Overflow用户
提问于 2012-03-23 02:23:57
回答 3查看 11K关注 0票数 19

javax.xml.parsers.DocumentBuilderFactoryJava 1.4 doc以明确的术语表示:

不能保证DocumentBuilderFactory类的

实现是线程安全的。用户应用程序负责确保从多个线程使用DocumentBuilderFactory。或者,应用程序可以为每个线程提供一个DocumentBuilderFactory实例。应用程序可以使用相同的工厂实例来获取DocumentBuilder的一个或多个实例,前提是该工厂的实例不会同时在多个线程中使用。

然而,Java 5Java 6的文档却没有提到这一点。DocumentBuilderFactory现在是线程安全的吗,或者Sun只是觉得这个警告有点过头了,人们应该更清楚?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-22 08:50:21

我实际上已经有一段时间没有考虑过这个问题了,但是看看DocumentBuilderFactoryImplDocumentBuilderImpl的源代码,我觉得这可能不是一个好主意。工厂有一堆内部状态,构建器在其构造过程中修改该状态--请参阅DocumentBuilderImpl构造函数中的the call to setDocumentBuilderFactoryAttributes

如果你知道你永远不会传递这些属性,你也许能够逃脱惩罚,但为了安全起见,我想把整个东西包装在其他不会暴露危险部分的对象中,我认为只需确保每个线程有一个单独的工厂就可以了。

票数 1
EN

Stack Overflow用户

发布于 2019-01-04 03:22:37

根据单例DocumentBuilderFactory的文档,newInstance方法不是同步的,因此,DocumentBuilderFactory在Java8中仍然不是线程安全的……在Java 11中也不是。实际上,构造函数从Java1.4开始就没有变化。

票数 3
EN

Stack Overflow用户

发布于 2012-03-23 02:28:15

因为在没有告诉我钱的情况下让它的线程安全是非常糟糕的,所以它仍然是不安全的。您可以使用断点自己测试这一点。

票数 -6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9828254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档