线程池的分类
2022-04-01 13:14:34 0 举报
线程池的分类和线程池的运行原理
作者其他创作
大纲/内容
newSingleThreadExecutor(最慢)
队列
任务先给同步队列,同步队列直接给外包员工处理,任务有多少,外包程序员有多少
优点:所有任务都由一个核心员工处理,自研公司,但只有一个人缺点:其他任务在队列内存中,容易oom
newFixedThreadPool(较慢)
公司
线程池的分类
优点:没有核心员工,只有非核心员工对人物进行处理,全部外包,来多少任务就创建多少线程,用完过期销毁缺点:创建大量线程,消耗CPU,会导致cpu 100%
提交优先级
线程池底层原理
CorePoolSize: 1MaximumPoolSize: 1KeepAliveTime: 0LLinkedBlockingQueue
newCachedThreadPool(最快)
任务给一个核心员工,只有一个人执行任务,后面任务在队列中排队
ThreadPoolExecutor
非核心员工
Task
1:核心员工2:队列3:非核心员工
CorePoolSize: 0 MaximumPoolSize: maxKeepAliveTime: 60LSynchronousQueue
任务执行顺序(优先级)
核心员工
任务提交顺序(优先级)
1:核心员工2:非核心员工3:队列
优点:所有任务都由核心员工处理,自研,如果所有核心员工处理不了,则放到阻塞队列中排队缺点:其他任务在队列内存中,容易oom
CorePoolSize: 10 MaximumPoolSize: 10KeepAliveTime: 0LLinkedBlockingQueue
int CorePoolSize 核心线程数int maximumPoolSize 非核心线程数long KeepAliveTime 非核心线程存活时间TimeUnit unit 时间单位BlockingQueue<Runnable> workQueue 队列ThreadFactory threadFactory 线程工厂RejectedExecutionHandler handler 拒绝策略
任务先给核心员工,核心员工满了之后,新的任务存放到阻塞队列中,阻塞队列几乎无穷大
0 条评论
下一页