代码之家  ›  专栏  ›  技术社区  ›  Avi

DocumentBuilder.parse()是线程安全的吗?

  •  26
  • Avi  · 技术社区  · 17 年前

    是标准的Java1.6吗 javax.xml.parsers.DocumentBuilder 类线程安全?从多个线程并行调用parse()方法安全吗?

    JavaDoc没有提到这个问题,但是 JavaDoc for the same class 在Java1.4中特别指出 不是吗 意味着同时进行;那么我可以假设在1.6中是这样吗?

    3 回复  |  直到 13 年前
        1
  •  27
  •   Tom Hawtin - tackline    12 年前

    private static final ThreadLocal<DocumentBuilder> builderLocal =
        new ThreadLocal<DocumentBuilder>() {
            @Override protected DocumentBuilder initialValue() {
                try {
                    return
                        DocumentBuilderFactory
                            .newInstance(
                                "xx.MyDocumentBuilderFactory",
                                getClass().getClassLoader()
                            ).newDocumentBuilder();
                } catch (ParserConfigurationException exc) {
                    throw new IllegalArgumentException(exc);
                }
            }
        };
    

    (免责声明:与其说是试图编译代码,不如说是试图编译代码。)

        2
  •  21
  •   Jherico    16 年前

    DocumentBuilder上有一个reset()方法,可以将其恢复到最初创建时的状态。如果你要走本地路线,别忘了打电话,否则你会被水淹没。