线程池概述

作者: 无敌锤子棒棒鸡 | 来源:发表于2019-04-27 21:12 被阅读0次
    为什么要使用线程池?
    1.降低资源消耗
    2.提高响应速度
    3.提高线程的可管理性(线程监控)
    
    线程池核心参数
    corePoolSize    -- 核心线程数
    maximumPoolSize -- 线程不够用时能够创建的最大线程数
    workQueue       -- 任务等待队列
    keepAliveTime   -- 当线程数量大于核心线程数时,此时又是空闲的,则过此设置时间,线程销毁
    threadFactory   -- 用于创建新线程
    handler         -- 线程饱和策略
    
    线程池的几种拒绝策略
    AbortPolicy         -- 直接抛出异常(默认策略)
    CallerRunsPolicy    -- 用调用者所在的线程来执行任务
    DiscardOldestPolicy -- 丢弃队列中最靠前的任务,并执行当前任务
    DiscardPolicy       -- 直接丢弃任务
    
    execute()和submit()的区别
    void execute(Runnable command);
    <T> Future<T> submit(Runnable task, T result);
    
    从上面就能很直观的看出,execute适用于没有返回值的任务,而submit适用于有返回值的任务
    
    线程池工作的具体流程
            --shutdown-->SHUTDOWN --阻塞队列为空,线程池工作数量为0 -- 
    RUNNING -                                                       --> TIDYING --terminated() --> TERMINATED
            --shutdownnow-->STOP --线程池中工作线程数量为0 ----------
    

    相关文章

      网友评论

        本文标题:线程池概述

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