Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsoup文档是线程安全的吗?_Java_Thread Safety_Jsoup - Fatal编程技术网

Java jsoup文档是线程安全的吗?

Java jsoup文档是线程安全的吗?,java,thread-safety,jsoup,Java,Thread Safety,Jsoup,使用jsoupsomeDocument是否安全。从多个线程中选择(..),或者读操作是否有一些内部状态?即使类不是线程安全的,也可以从多个线程安全地调用。.select(String cssSelector)方法的底层实现将引用传递给调用此方法的元素(本例中为Document对象),但它不会调用任何更改调用方状态的方法 当您调用.select(String cssSelector)时,您实际上调用了方法,其中root实例是对文档对象的引用 /** Build a list of element

使用jsoup
someDocument是否安全。从多个线程中选择(..)
,或者读操作是否有一些内部状态?

即使类不是线程安全的,也可以从多个线程安全地调用。
.select(String cssSelector)
方法的底层实现将引用传递给调用此方法的元素(
本例中为Document
对象),但它不会调用任何更改调用方状态的方法

当您调用
.select(String cssSelector)
时,您实际上调用了方法,其中
root
实例是对
文档
对象的引用

/**
 Build a list of elements, by visiting root and every descendant of root, and testing it against the evaluator.
 @param eval Evaluator to test elements against
 @param root root of tree to descend
 @return list of matches; empty if none
 */
public static Elements collect (Evaluator eval, Element root) {
    Elements elements = new Elements();
    new NodeTraversor(new Accumulator(root, elements, eval)).traverse(root);
    return elements;
}
在此方法中,仅更新
元素
对象

为什么
文档
类不是线程安全的?
Document
类中有一些方法允许在没有任何同步机制的情况下更改对象的状态,例如。在最好的情况下,
Document
类应该是最终的且不可变的,所以在多个线程之间共享它的实例不会是一个问题。

您看到了吗?是的,但我调用
Jsoup.parse
一次,并在多个线程上共享结果(
Jsoup.Document
)。我希望对文档的读访问是线程安全的。(我将永远不会写入生成的
jsoup.Document
/
jsoup.Element