【问题标题】:Jsoup executing concurrently throws UnknownHostExceptionJsoup 同时执行抛出 UnknownHostException
【发布时间】: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


    【解决方案1】:

    尝试检查您是否在工作中配置了代理。如果是,那么您必须为 JSOUP 连接提供代理

    Document doc = Jsoup.connect(<website.com>).proxy(<host>, <port>).get();
    

    【讨论】:

      猜你喜欢
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2023-03-18
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      相关资源
      最近更新 更多