Подтвердить что ты не робот

Является ли DocumentBuilderFactory потокобезопасным в Java 5+?

Java 1.4 doc для javax.xml.parsers.DocumentBuilderFactory заявляет недвусмысленно:

Внедрение класса DocumentBuilderFactory НЕ гарантируется потокобезопасностью. Это зависит от пользовательского приложения, чтобы убедиться в использовании DocumentBuilderFactory из нескольких потоков. В качестве альтернативы приложение может иметь один экземпляр DocumentBuilderFactory для каждого потока. Приложение может использовать один и тот же экземпляр factory для получения одного или нескольких экземпляров DocumentBuilder, если экземпляр factory не используется одновременно в нескольких потоках.

Java 5 и Java 6 docs, однако, не говорите ничего подобного. Является ли DocumentBuilderFactory потокобезопасным сейчас, или Sun просто решил, что предупреждение было излишним, и люди должны знать лучше?

4b9b3361

Ответ 1

Внедрение класса DocumentBuilderFactory НЕ гарантируется потокобезопасностью. Это зависит от пользовательского приложения, чтобы убедиться в использовании DocumentBuilderFactory из нескольких потоков. В качестве альтернативы приложение может иметь один экземпляр DocumentBuilderFactory для каждого потока. Приложение может использовать один и тот же экземпляр factory для получения одного или нескольких экземпляров DocumentBuilder, если экземпляр factory не используется одновременно в нескольких потоках.

В DocumentBuilder существует метод reset(), который восстанавливает его состояние, когда оно было впервые создано. Если вы идете по пути ThreadLocal, не забудьте позвонить или у вас есть.

Ответ 2

Так как это было бы в крайне плохом вкусе, чтобы сделать его потокобезопасным, не сказав, что мои деньги - это все еще небезопасно. Вы можете проверить это самостоятельно, используя точки останова.