线程池原理以及相关概念(读书笔记)

java中的线程池
    合理使用线程池的好处
    1降低系统资源消耗
    2提高响应速度
    3提高线程的可管理性
线程池实现原理
    当向线程池提交一个任务后
    线程池判断是否核心线程都在执行任务。如果不是,则新建一个新的工作线程来执行任务。
    如果核心线程里都在执行任务,则进入下一个流程
    2线程池判断工作队列是否已满,如果工作队列没有满,则将新的任务存储在这个工作队列,如果工作队列已满,
    则进入下一个流程
    3线程池判断线程是否都处于工作状态。如果没有,则新建一个工作线程。如果已经满了,则交给饱和策略来处理这个
    任务。
ThreadPoolExecutor执行excute方法分下面4种情况

    (首先核心线程---》然后工作队列====》最大线程数====》饱和策略)

    

线程池的使用与创建
    new ThreadPoolexector
创建一个线程池需要几个参数
1corePoolsize
2.runnableTaskQueue
3.maxmumPoolSize
4.ThreadFactory
5.饱和策略
6keepAlivetime
7.TimeUnit
向线程池提交任务
        execute()和submit()方法
execute没有返回值
submit有返回值 futureget方法直到阻塞当前任务完成
关闭线程池
       shutdown和shutdownnow方法来关闭。原理遍历线程,然后逐个interrupt方法中断线程,shutdownnow首先将
线程设置成stop然后停止或者暂停任务的线程,并返回等待执行的任务的列表。
而shutdown只是将线程设置shutdown状态,然后中断所有没有在执行任务的线程
合理配置线程池
        任务性质:cpu密集型,io和混合任务
任务的优先级
任务执行时间
任务的依赖性
线程池的监控
        taskCount:线程池需要执行任务的数量
completedTaskCount:线程池执行过程已完成的最大数量

largestPoolSize:线程池曾经创建过最大线程的数量

文章来源《并发编程艺术》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值