线程池学习

本文详细介绍了线程池的概念,包括为何使用线程池、线程池的类结构、核心属性、工作原理、线程池状态、队列类型、拒绝策略、线程管理策略以及如何终止线程池。讲解了ExecutorService接口、常用线程池实现如FixedThreadPool、SingleThreadExecutor、CachedThreadPool和ScheduledThreadPool,以及ctl的设计和好处。
摘要由CSDN通过智能技术生成

为什么用需要线程池

如果我们在方法中直接new一个线程来处理,当这个方法被调用频繁时就会创建很多线程,不仅会消耗系统资源,还会降低系统的稳定性,一不小心把系统搞崩了,就可以直接去财务那结帐了。

如果我们合理的使用线程池,则可以避免把系统搞崩的窘境。总得来说,使用线程池可以带来以下几个好处:

降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。

提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

增加线程的可管理型。线程是稀缺资源,使用线程池可以进行统一分配,调优和监控。
就像你去餐厅吃饭,服务员总是提前洗好盘子,不会等你来打饭的时候才洗盘子,盘子就像是线程池里的线程,你打饭就是要处理的任务。

线程池类结构

在这里插入图片描述
Executor 的定义非常简单,就定义了线程池最本质要做的事,执行任务。

public interface Executor {
   
  
    void execute(Runnable command);
}

ExecutorService 也是个接口,不过他算是把线程池的框架搭出来了,告诉要实现它的线程池必须提供的一些管理线程池的方法。

AbstractExecutorService 是普通的线程池执行器,ScheduledExecutorService 是定时任务线程池。

线程池的核心属性

在这里插入图片描述

corePoolSize :核心线程数

maximumPoolSize: 最大线程数

keepAliveTime :线程在线程池中不被销毁的空闲时间,如果线程池的线程太多,任务比较小,到这个时间就销毁线程池。

unit :

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值