美文网首页
多线程与线程池

多线程与线程池

作者: wintersweett | 来源:发表于2017-10-18 18:16 被阅读0次

    项目最近遇到页面接口特别多的情况,特写此文

    线程池的优势毋庸置疑:

    1)重用线程池中的线程,避免大量的线程的创建和销毁所带来的性能开销。

    2)能有效的控制线程的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象

    3)能够对线程进行简单的管理,并提供定时执行以及指定建个循环执行等功能

    ThreadPoolExcutor是线程池的真正实现。他执行任务时大致遵循如下规则:

    1)如果线程池中的线程数量未达到核心线程数量,那么会直接启动核心线程来开启任务。

    2)如果线程池中的线程数量已经达到或者超过核心线程数量,那么任务会插入到任务队列中排队等待执行。

    3)如果在2中无法将任务插入到任务队列中,往往是由于任务队列已满,这个时候如果线程数量未到线程数量的最大值,那么会立刻开启非核心线程来执行任务

    4)如果线程池中线程数量已经达到最大值,那么就拒绝执行此任务,

    四类常见的线程池

    newFixedThreadPool:都是核心线程,数量固定,即使线程空闲,并不会被回收,无超时机制,任务队列无限制

    newCachedThreadPool:只有非核心线程,数量不固定,超时时长60s,

    newscheduledThreadPool:核心线程数量固定,非核心线程数量无限制,非核心线程空闲时,会立即被回收

    newSingledThreadPool:内部只有一个核心线程

    相关文章

      网友评论

          本文标题:多线程与线程池

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