Java и XML (JAXP) - как насчет кэширования и безопасности потоков?

  1. Я хотел бы знать, какие объекты можно повторно использовать (в том же или другом документе) при использовании Java API для обработки XML , JAXP:

    • DocumentBuilderFactory
    • DocumentBuilder
    • XPath
    • Узел
    • ErrorHandler (РЕДАКТИРОВАТЬ: я забыл, что это должно быть реализовано в моем собственном коде, извините)
  2. Рекомендуется ли кэшировать эти объекты или реализации JAXP уже кэшируют их?

  3. Является ли (повторно) использовать этих объектов поточно-ориентированным ?

26
задан bdoughan 28 March 2011 в 14:12
поделиться

1 ответ

Использовать повторно

В одном потоке эти объекты можно и нужно использовать повторно. Например, вы можете использовать DocumentBuilder для анализа нескольких документов.

Потоковая безопасность

DocumentBuilderFactory, использованная для явного указания, что она не была потокобезопасной, я считаю, что это все еще верно:

Реализация DocumentBuilderFactory класс НЕ гарантированно потокобезопасный. Это до в пользовательское приложение, чтобы убедиться об использовании DocumentBuilderFactory из более чем один поток.

Из Stack Overflow DocumentBuilder тоже не является потокобезопасным. Однако в Java SE 5 был добавлен метод сброса, позволяющий повторно использовать DocumentBuilders:

XPath не потокобезопасность, из Javadoc

. Объект XPath не является потокобезопасным и не реентерабельный.Другими словами, это ответственность приложения перед убедитесь, что один объект XPath не используется более чем из одного потока в любом дано время, а пока оценка вызывается метод, приложения могут не рекурсивно вызывать оценку метод.

Узел не является потокобезопасным, с веб-сайта Xerces

Является ли Xerces DOM выполнение потокобезопасный? Нет. DOM не требовать, чтобы реализации были потоками безопасно. Если вам нужен доступ к DOM из нескольких потоков, вы требуется добавить соответствующие замки в код вашего приложения.

ErrorHandler - это интерфейс, поэтому обеспечение безопасности потоков зависит от вашей реализации этого интерфейса. Для указателей на безопасность потоков вы можете начать здесь:

27
ответ дан 28 November 2019 в 07:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: