使用VTD 2.11
VTDGen可以初始化一次并由多个线程使用吗?
例如,我想在servlet中使用它,因此当servlet初始化时,VTGen会被初始化一次,然后每个请求都会解析收到文档的内容。
同样的AutoPilot我想我可以设置一次XPATH,然后不断重新绑定每个新的导航?
答案 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更好...这导致不合需要的线程争用......