哪些VTD xml组件是线程安全的?

时间:2013-05-23 21:33:38

标签: vtd-xml

使用VTD 2.11

VTDGen可以初始化一次并由多个线程使用吗?

例如,我想在servlet中使用它,因此当servlet初始化时,VTGen会被初始化一次,然后每个请求都会解析收到文档的内容。

同样的AutoPilot我想我可以设置一次XPATH,然后不断重新绑定每个新的导航?

1 个答案:

答案 0 :(得分:1)

是的,VTD-XML可以启动一次并多次使用。但由于VTDGen的初始化成本非常低,因此实例化多个副本会产生很少的成本......

AutoPilot也可以重复使用......它与XPath表达式密切相关。

但是,在许多情况下,为每个线程分配AutoPilot实例是有意义的......每个实例都引用相同的xpath ......

举个例子:

AutoPilot ap1 = new AutoPilot();
AutoPilot ap2 = new AutoPilot();

ap1.selectXpath("/a/b/c") // assign to thread 1
ap2.selectXPath("/a/b/c"); // assigned to thread2, 

虽然ap1和ap2选择相同的xpath,但它们是两个不同的xpath对象,并且可以由2个线程独立评估...这比尝试在2个线程之间共享单个AutoPilot更好...这导致不合需要的线程争用......