2012-03-22 4 views
16
がない不確かな面で javax.xml.parsers.DocumentBuilderFactory状態の

Java 1.4 doc:のDocumentBuilderFactoryクラスの実装は、スレッドセーフであることが保証されていませんDocumentBuilderFactoryはJava 5+でスレッドセーフですか?

。複数のスレッドからDocumentBuilderFactoryを使用するかどうかを確認することは、ユーザーアプリケーションの責任です。あるいは、アプリケーションは、スレッドごとにDocumentBuilderFactoryの1つのインスタンスを持つことができます。アプリケーションは、ファクトリのインスタンスが一度に複数のスレッドで使用されていない場合、同じファクトリインスタンスを使用してDocumentBuilderの1つ以上のインスタンスを取得できます。

Java 5Java 6のドキュメントは、何も言及していません。今やDocumentBuilderFactoryはスレッドセーフなのですか?あるいは、Sunは警告が過度のものだと判断し、人々はよく知っているべきですか?

+0

[DocumentBuilder.parse()スレッドセーフですか?](http://stackoverflow.com/questions/56737/is-documentbuilder-parse-thread-safe) –

+5

重複はありませんが、問題はそれが同じビルダーで複数のドキュメントを解析しようとするのが安全かどうかではなく、同じファクトリを使用してDocumentBuildersを構築する*マルチスレッドで安全です。 –

答えて

-5

私のお金を言わずにスレッドを安全にするには非常に貧弱な味でしたので、まだ安全ではないということです。ブレークポイントを使用してこれを自分でテストすることができます。

13

DocumentBuilderFactoryクラスの実装は、スレッドセーフであることは保証されません。複数のスレッドからDocumentBuilderFactoryを使用するかどうかを確認することは、ユーザーアプリケーションの責任です。あるいは、アプリケーションは、スレッドごとにDocumentBuilderFactoryの1つのインスタンスを持つことができます。アプリケーションは、ファクトリのインスタンスが一度に複数のスレッドで使用されていない場合、同じファクトリインスタンスを使用してDocumentBuilderの1つ以上のインスタンスを取得できます。

DocumentBuilderには、最初に作成された状態に戻すreset()メソッドがあります。あなたがThreadLocalルートに行くなら、これを呼ぶことを忘れないでください。

関連する問題