【发布时间】:2018-06-20 19:59:55
【问题描述】:
我尝试与此代码并行运行 Jsoup(版本 1.11.2):
public class JsoupParallelRunner {
private static String[] urls = { ... some URLs ...}
public static void main(String... args) {
ExecutorService executor = Executors.newFixedThreadPool(10);
for (String url : urls) {
executor.execute(() -> {
try {
Connection c = Jsoup.connect(url);
Connection.Response r = c.execute();
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
但是如果我在FixedThreadPool 中使用超过6 个并行线程,它会在Jsoup 的execute() 方法中抛出java.net.UnknownHostException。 6以下没有问题。
根据jsoup thread safety Jsoup 是线程安全的。
如果有帮助的话:我的 CPU 有 2 个核心(4 个虚拟)。
更新:这似乎只是我电脑的问题。我在另外两台计算机(相同的 Java 版本,相同的 Jsoup 版本)上尝试了它,它在那里工作。
更新 2:这似乎是我的笔记本电脑在某个网络中的问题。我在我的家庭网络上用这台笔记本电脑试了一下——它在那里工作。回去工作 - 同样的问题。其他所有与网络相关的东西似乎都可以工作(浏览器、ssh 等)。我猜这是一些奇怪的网络问题,与 Jsoup 无关。
【问题讨论】:
标签: java multithreading jsoup