并发执行的Jsoup会抛出UnknownHostException

时间:2018-01-11 13:10:07

标签: java multithreading jsoup

我尝试与此代码并行运行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的java.net.UnknownHostException方法中抛出execute()。 6岁以下没有问题。

根据jsoup thread safety Jsoup是线程安全的。

如果有任何帮助:我的CPU有2个核心(4个虚拟)。

更新:这似乎只是我电脑的问题。我在其他两台计算机上试过它(相同的Java版本,相同的Jsoup版本)并且它在那里工作。

更新2 :这似乎是我的笔记本电脑在某个网络中的问题。我在我的家庭网络上用这台笔记本电脑试了一下 - 它在那里工作了。回去工作 - 同样的问题。其他网络相关似乎工作(浏览器,ssh等)。我想这是一个奇怪的网络问题,与Jsoup无关。

1 个答案:

答案 0 :(得分:0)

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

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