14.ThreadPool
Java · 4 篇笔记
- 6.14 14.ThreadPoolhistorical
1. 是什么 Java的线程池框架,他提供了“任务提交”与“任务执行”分离开的机制 1.1. 为什么需要线程池 用来复用线程 - 第一,线程的创建和销毁开销比较大 - 第二,线程数量过多的话会导致cpu忙于上下文切换而不“干活” 1.2. 使用场景 - 单个任务执行的时间不能太长 - 任务数很多 2
- 6.28 Executorshistorical
1. 使用 2. newCachedThreadPool 3. newScheduledThreadPool 4. newFixedThreadPool 5. newSingleThreadExecutor
- 6.36 RejectedExecutionHandlerhistorical
1. RejectedExecutionHandler是什么 corePoolSize满了,blockingQueue也满了,maxPoolSize也满了,那么新的任务该怎么处理,这就看RejectedExecutionHandler 2. 分类 2.1. CallerRunsPolicy 处理策略
- 线程池数目估算historical
1. 估算线程数目 1.1. 吞吐量=并发度/响应时间 根据吞吐量=并发度/响应时间,那么线程数=QPS 响应时间。 压测 二分法设置线程数,压测查看CPU利用率在80% IO密集型/CPU密集型 如果是计算密集型应用,那么线程数=CPU核心数+1 如果是IO密集型应用,那么线程数=CPU核心数 (1+IO阻塞时间/CPU时间) 1.2. TPS估算 假设要求一个系统的TPS(Transaction Per Second或者Task P