gpt4 book ai didi

java - 两个线程调用一个方法

转载 作者:行者123 更新时间:2023-11-30 08:29:06 25 4
gpt4 key购买 nike

我有一种方法可以像这样编写 XML 文件:

private void doProcess() {

Element rootElement = mDoc.createElement("Test");
mDoc.appendChild(rootElement);

....... I build the whole document here...
}

但是这个方法可以被多个线程调用,所以例如如果两个线程同时调用这个方法我得到一个

): org.w3c.dom.DOMException: Only one root element allowed

我已经尝试过使用可重入锁,但这没有用...有人可以给我提示吗?

编辑:

我不使用多个线程构建文档...我的方法的每次调用都会构建他自己的文档...所以有时在我的应用程序中可能会发生我的方法将同时被调用两次...并且我的问题是...

最佳答案

在你陈述的问题中:

I dont build the Document with multiple Threads...Every Call of my Method builds his own Doc

目前,给定的代码在函数的所有调用之间共享一个文档。为了让对函数的每次调用都在其自己的文档上工作,您需要修改代码,以便每次调用都有自己的文档。

这可以通过创建并返回一个新的文档对象来完成

private XMLDocument doProcess() {
XMLDocument mDoc = new XMLDocument(); // or simmilar depending on XML library
Element rootElement = mDoc.createElement("Test");
mDoc.appendChild(rootElement);

// ....... I build the whole document here...

return mDoc; //return the document object
}

或者,通过将文档对象作为参数传入

private void doProcess(XMLDocument mDoc) { ... }

关于java - 两个线程调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com