多线程与高并发
2022-05-21 18:17:57 1 举报
线程池模型
作者其他创作
大纲/内容
task
消费阻塞并添加task时会Notify
销毁
核心线程1
超时则销毁
队列空的时候,消费者阻塞
非核心线程8
线程池线程复用模型
拒绝策略1.DiscardPolicy拒绝任务时,会直接抛出一个类型为 RejectedExecutionException的RuntimeException,让你感知到任务被拒绝了,于是你便可以根据业务逻辑选择重试或者放弃提交等策略。2.DiscardPolicy直接被丢弃掉,也不会给你任何的通知,相对而言存在一定的风险3.DiscardOldestPolicy丢弃任务队列中的头结点,通常是存活时间最长的任务4.CallerRunsPolicy-推荐把这个任务交于提交任务的线程执行任务不会被丢弃,不会造成业务损失会造成提交任务的线程耗时增加
核心线程4
提交task
producer
核心线程2
队列满的时候,生产者阻塞
consumer
ThreadPool
消费task
核心线程3
若队列满了会进行拒绝
扩容
BlockingQueue
ThreadFactory
非核心线程7
调用线程
非核心线程5
workQueue.poll
非核心线程6
获取任务
workQueue(BlockingQueue)
总线程数>core线程数
0 条评论
下一页