我创建了一个 DOM 文档静态对象,如下所示,它使用了 javax.xml.parsers.* 和 org.w3c.dom.* API:
DocumentBuilderFactory docBldrFactry = DocumentBuilderFactory.newInstance();
docBldrObj = docBldrFactry.newDocumentBuilder();
File file = new File(fileDirectory);
// Parse the XML file and return a DOM document object
document = docBldrObj.parse(file);
//FYI, document is declared as private static org.w3c.dom.Document document elsewhere.
在上面创建之后,如果这个静态DOM文档对象被线程共享,但是所有线程都只是读取(遍历)这个文档,那么线程安全吗?
我想这是因为读取不应该修改这个共享状态,但不确定内部是否有一些我不知道的魔法。
谢谢
最佳答案
通过编写自己的简单文档结构解决了这个问题。例如,将 DOM 文档克隆到其中,这对读取操作是线程安全的。 仅供引用,出于我自己的目的,在克隆文档时,除了根据我需要的信息(COMMENT_NODE、TEXT_NODE、ELEMENT_NODE、属性)之外,我不会克隆所有内容。
关于java - 遍历(读取)静态 DOM 文档对象是否线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733083/