Я хотел бы знать, какие объекты могут быть повторно использованы (в том же или другом документе) при использовании Java API для XML обработки, JAXP:Java и XML (JAXP) - А как насчет кеширования и безопасности потоков?
DocumentBuilderFactory
DocumentBuilder
XPath
Node
-
ErrorHandler
ли это рекомендуется кэша этих объектов или сделать реализации JAXP уже кэшировать их?
ли (повторно) использовать этих объектов поточно-?
ответ
Многократное
В том же потоке, эти объекты могут и должны быть использованы повторно. Например, вы можете использовать DocumentBuilder для анализа нескольких документов.
Thread Safety
DocumentBuilderFactory используется для явной форме заявить, что не поточно, я считаю, что это все-таки правда:
Реализация класса DocumentBuilderFactory НЕ гарантированно поточно безопасно. Для использования DocumentBuilderFactory используется приложение .
От переполнения стека, DocumentBuilder не кажется, поточно либо. Однако в Java SE 5 метод сброса был добавлен, чтобы повторно использовать DocumentBuilders:
- Is DocumentBuilder.parse() thread safe?
- http://download-llnw.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilder.html#reset()
- http://www.junlu.com/msg/289939.html (около DocumentBuilder.сброс())
XPath, не поточно, от Javadoc
Объект XPath, не поточно-и не реентерабельным. Другими словами, это ответственность приложения к убедитесь, что один объект XPath не используется более чем один поток в любой данный момент времени, и в то время как оценка метод вызывается, приложения могут не рекурсивно вызвать оценку способ.
Узел не поточно, с веб-сайта Xerces
Является ли реализация Xerces DOM потокобезопасной? Нет. DOM не требует, чтобы реализации были потоком безопасным. Если вам нужно получить доступ к DOM из нескольких потоков, вы должны указать , чтобы добавить соответствующие код-замки в код вашего приложения.
ErrorHandler является интерфейсом, так что до вашей реализации этого интерфейса, чтобы обеспечить безопасность потоков. Для указателей на потокобезопасность вы могли бы начать здесь:
Что о кешировании/повторное использование/потоковой безопасности объектов Node? – MRalwasser
Узлы DOM не гарантируются потокобезопасностью. –
Где это указано? – MRalwasser