线程池

一、为什么需要线程池?
       在实际应用中,线程是很占用系统资源的,如果对线程管理不善,很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程。
好处:
(1)使用线程池可以重复利用已有的线程池继续执行任务,避免线程池在创建和销毁时造成消耗
(2)由于没有线程创建和销毁时的消耗,可以提高系统响应速度
(3)通过线程池可以对线程进行合理的管理,根据系统的承受能力调整可运行线程数量的大小 等

二、线程池分类

ScheduledThreadPoolExecutor:可以定时执行任务

三、线程池原理

(1)有任务来了,先找核心线程处理

(2)核心线程都有任务的话,则全去队列等待

(3)队列满了则创建临时线程处理

(4)临时线程也全都有任务的话,则采取拒绝策略

ThreadPoolExecutor参数解释:

 public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) 
corePoolSize:核心线程数;maximumPoolSize:最大线程数;keepAliveTime非核心线程空闲时存活时间;unit:时间单位
workQueue:阻塞队列;threadFactory:线程工厂(一般用默认值,不用传);handler:拒绝策略(也有默认值)

一般我们是自己根据业务创建线程池(可以指定参数,灵活运用),不用工厂去创建

 ThreadPoolExecutor pool = new ThreadPoolExecutor(1,1,60, 
                TimeUnit.SECONDS,new ArrayBlockingQueue<>(5));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值