ThreadPoolTaskExecutor 队列有什么用
作者:
青玉_f18c | 来源:发表于
2023-05-01 22:28 被阅读0次
ThreadPoolTaskExecutor 有三个核心参数:
- corePoolSize
- maxPoolSize
- queueCapacity
前两个不必说,大家都知道干啥用,这里说下queue size的两个设计用途
- 缓存:大量任务的突发提交,促使线程池创建工作线程,然而这些线程很快可能又销毁了;起到任务流的削峰填谷的作用。
- 公平:提供默认的FIFO策略
两个典型的使用场景
- 高并发(实时性高的场景),注意这里推荐设置成0,因为0时使用乐观锁的同步,加上非公平的策略策略加持,效率很高;
queueCapacity=0
错误的使用:队列设置太小,由于线程池使用的是LinkedBlockingQueue,造成工作线程对队列的竞争效应;如果设置过大,在流量攀升过程中,任务在队列的排队时间过长,同样任务整体时间变长=排队时间+执行时间
- 缓存刷新(实时性低的场景),建议core 和 max都设置小一点,queue 尽量设置的大一点;因为刷新要求的实时性不高;可以最大限度的利用资源;
本文标题:ThreadPoolTaskExecutor 队列有什么用
本文链接:https://www.haomeiwen.com/subject/zmfajdtx.html
网友评论