ThreadPoolTaskExecutor 队列有什么用

ThreadPoolTaskExecutor 有三个核心参数:

  • corePoolSize
  • maxPoolSize
  • queueCapacity

前两个不必说,大家都知道干啥用,这里说下queue size的两个设计用途

  • 缓存:大量任务的突发提交,促使线程池创建工作线程,然而这些线程很快可能又销毁了;起到任务流的削峰填谷的作用。
  • 公平:提供默认的FIFO策略

两个典型的使用场景

  • 高并发(实时性高的场景),注意这里推荐设置成0,因为0时使用乐观锁的同步,加上非公平的策略策略加持,效率很高;
    queueCapacity=0
    错误的使用:队列设置太小,由于线程池使用的是LinkedBlockingQueue,造成工作线程对队列的竞争效应;如果设置过大,在流量攀升过程中,任务在队列的排队时间过长,同样任务整体时间变长=排队时间+执行时间
  • 缓存刷新(实时性低的场景),建议core 和 max都设置小一点,queue 尽量设置的大一点;因为刷新要求的实时性不高;可以最大限度的利用资源;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容