线程池往往用于处理任务

    • 在日常的业务开发中,往往都是IO密集型任务而非CPU密集型任务。因此可以将线程池的核心线程设置为CPU核心数*2,以减少线程切换带来的消耗
    • 由于线程池提交的任务处理有优先级,任务优先被核心线程处理,其次是进入队列,最后被最大线程数处理。因此需要额外注意队列的长度带来的影响,队列太长,容易撑爆。
    • 可以监控队列。
    • 根据线程池提供的API可以动态参数调整,也就是美团发布文章的动态线程池。
    • 根据第二条描述,任务会相对优先进入队列,然后才拓展到最大线程,那么是不是可以先跑满最大线程呢,等最大线程都活跃起来了,气氛调动起来了,在把对于的方法放队列或者是进入reject
      • Tomcat
      • Dubbo

        进入reject就结束了么,是不是还可以做点其他的事情呢,线程池都满了,难道不想知道线程都在做什么么,此时留下一个堆栈则是完美的保留现场。 除了jstack我们也可以获取到堆栈了,美滋滋。