MRa*_*ser 5 java xml multithreading caching
从这里我了解到org.w3c.dom.Node(以及同一包中的其他类)不是线程安全的。
我在问自己是否以及应该如何缓存这些类?
ThreadLocal作为DocumentBuilder/DocumentBuilderFactory而不是每次都Node吗?您不想缓存 XML 文档。最好将其读取/解析为“配置”对象。根据您的配置的复杂或简单程度,它可能是一个简单的 Map 或更复杂的东西。
一个好处(除了从多个线程解析同一文档所带来的并发问题之外)是您的配置不受 XML 格式的束缚。想想过去所有的配置都在属性文件中,然后 XML 出现了,每个开源包都添加了对 XML 的支持。然后注释出现了,当时也支持了。Hibernate 就是一个很好的例子。
您想要做的是解析配置文件并将生成的配置对象而不是源 XML 保留在缓存中。