【问题标题】:readTimeout in a multithreaded environment多线程环境中的 readTimeout
【发布时间】:2019-08-06 15:47:23
【问题描述】:

我有一个由抓取网页的工作人员组成的系统。现在,我设置了 URLConnection 的两个参数:connectTimeout 和 readTimeout。

据推测,该应用是多线程的。
问题:

  1. 这意味着如果我将超时设置为 10 秒。这些并不是线程试图读取的 10 秒。实际上,如果我们有很多线程,则可能是我们的线程被饿死了,当它有机会继续(甚至开始)读取时,它就会超时
  2. 如果上述情况属实,我该如何处理这个问题?首先想到的是选择正确的数字,同时考虑线程数。

有没有更好的解决方案?

【问题讨论】:

    标签: java multithreading urlconnection


    【解决方案1】:

    简单地说,除非您使用 100 的线程数,否则您可能不必担心饥饿。线程由于上下文切换而损失的时间真的可以忽略不计。 (请记住,您的计算机很可能有多个处理器,并且 IO 可能是处理 IO 处理组件而不是处理器)。所以在大多数情况下,你的 10 秒超时实际上是 10 秒超时。

    【讨论】:

    • 谢谢。值得一提的是,我总共使用了数百个线程,尤其是 128 个线程进行爬取
    • 您将需要使用一些分析器来检查正在发生的事情,但您的数字并没有异常高。你应该没事
    猜你喜欢
    • 2018-05-10
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多