[英]Jsoup executing concurrently throws UnknownHostException
我尝试与此代码并行运行 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 个并行线程,它会在FixedThreadPool
的execute()
方法中抛出java.net.UnknownHostException
。 低于6没有问题。
根据jsoup 线程安全Jsoup 是线程安全的。
如果有任何帮助:我的 CPU 有 2 个内核(4 个虚拟)。
更新:这似乎只是我的电脑的问题。 我在另外两台计算机(相同的 Java 版本,相同的 Jsoup 版本)上尝试了它,并且在那里工作。
更新 2 :这似乎是我的笔记本电脑在某个网络中的问题。 我在我的家庭网络上用这台笔记本电脑尝试过 - 在那里它起作用了。 回去工作 - 同样的问题。 与网络相关的所有其他内容似乎都可以工作(浏览器、ssh 等)。 我想这是一些奇怪的网络问题,与 Jsoup 无关。
尝试检查您是否在工作中配置了代理。 如果是,那么您必须为 JSOUP 连接提供代理
Document doc = Jsoup.connect(<website.com>).proxy(<host>, <port>).get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.