3

以下のような 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 ドキュメント オブジェクトがスレッドによって共有されているが、すべてのスレッドがこのドキュメントを読み取る (トラバースする) だけの場合、それはスレッド セーフですか?

read はこの共有状態を変更すべきではないためだと思いますが、内部的に私が知らない魔法があるかどうかはわかりません。

ありがとう

4

1 に答える 1

1

この問題は、独自の単純なドキュメント構造を作成することで解決されました。たとえば、読み取り操作でスレッドセーフな DOM ドキュメントをそれにクローンします。参考までに、私自身の目的のために、ドキュメントを複製するとき、必要に応じた情報 (COMMENT_NODE、TEXT_NODE、ELEMENT_NODE、属性) 以外は複製しません。

于 2012-12-06T15:35:17.927 に答える