Безопасен ли поток DocumentBuilder?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Безопасен ли поток DocumentBuilder?

Сообщение Anonymous »

Текущая база кода, которую я изучаю, использует парсер DOM. Следующий фрагмент кода дублируется в 5 методах:

Код: Выделить всё

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Если метод, содержащий приведенный выше код, вызывается в цикле или метод вызывается в приложении несколько раз, мы несем накладные расходы на создание нового экземпляра DocumentBuilderFactory и нового экземпляра DocumentBuilder для каждого вызова такого метода.

Было бы хорошей идеей создать одноэлементную оболочку вокруг фабрики DocumentBuilder и экземпляров DocumentBuilder, как показано ниже:

Код: Выделить всё

public final class DOMParser {
private DocumentBuilderFactory = new DocumentBuilderFactory();
private DocumentBuilder builder;

private static DOMParser instance = new DOMParser();

private DOMParser() {
builder = factory.newDocumentBuilder();
}

public Document parse(InputSource xml) {
return builder.parser(xml);
}
}
Могут ли возникнуть какие-либо проблемы, если указанный выше синглтон используется несколькими потоками? Если нет, то будет ли какой-либо прирост производительности при использовании описанного выше подхода создания экземпляров DocumentBuilderFactory и DocumentBuilder только один раз за время существования приложения?

Изменить:

Единственный раз, когда мы можем столкнуться с проблемой, это если DocumentBuilder сохраняет некоторую информацию о состоянии при анализе XML-файла, что может повлиять на синтаксический анализ следующего XML-файла.

Подробнее здесь: https://stackoverflow.com/questions/124 ... hread-safe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»