1. 6.14 14.ThreadPoolhistorical

    1. 是什么 Java的线程池框架,他提供了“任务提交”与“任务执行”分离开的机制 1.1. 为什么需要线程池 用来复用线程 - 第一,线程的创建和销毁开销比较大 - 第二,线程数量过多的话会导致cpu忙于上下文切换而不“干活” 1.2. 使用场景 - 单个任务执行的时间不能太长 - 任务数很多 2

  2. 6.28 Executorshistorical

    1. 使用 2. newCachedThreadPool 3. newScheduledThreadPool 4. newFixedThreadPool 5. newSingleThreadExecutor

  3. 6.36 RejectedExecutionHandlerhistorical

    1. RejectedExecutionHandler是什么 corePoolSize满了,blockingQueue也满了,maxPoolSize也满了,那么新的任务该怎么处理,这就看RejectedExecutionHandler 2. 分类 2.1. CallerRunsPolicy 处理策略

  4. 线程池数目估算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