美文网首页
threadPool 几个要点

threadPool 几个要点

作者: NazgulSun | 来源:发表于2020-04-03 15:24 被阅读0次

    几种场景:

    1. 新的线程来了
      1)先看,池子里面的线程,如果小于 coresize, 则新建。 这个时候。不管有不有空闲的线程,都是新建。
      也就是 新建优先。
      2)如果 等于 coresize, 则加入到 queue 里面。 加入到queue里面。等待空闲线程的调度。

    3) 如果很多任务都来了,都加入queueu。这个queue 有不有界限?

    这里分为有界队列和无界队列。

    对于有界队列,比如50. 这里最多可以缓存50个 任务。
    如果到达了50个任务之后。 还没有空闲的 core thread。这个时候。要看另外一个 maxSize 参数。

    如果maxSize > coresize, 这里就会 新建临时的 thread 去处理任务。 直到 达到 了 maxSize的上线。
    如果还有更多任务进来,打满了 queue。 就报错了。

    记住这个max size 里面的thread 是临时的。 设置keep alive 可以方便的回收这些thread。
    另外 core 的thread 默认不回收,但是也可以设置相应的参数。允许回收。

    另外就是 无界队列。 对于无界队列。 就是queque不会满, 会耗光所有的资源啊。
    这个时候。maxsize 也就是无效的。

    在使用 threadpool的时候。 通常需要考虑 生产者和消费者的速度差异。
    需要控制queue的大小。

    相关文章

      网友评论

          本文标题:threadPool 几个要点

          本文链接:https://www.haomeiwen.com/subject/eywhphtx.html