Tomcat使用堆栈intsead队列?为什么最好使用堆栈而不是队列或任何其他池?

时间:2016-11-05 07:52:25

标签: java tomcat concurrency

当我阅读Tomcat source code时,我发现堆栈正用于处理器对象缓存。为什么SynchronizedStack优先于ConcurentLinkedQueue logging.basicConfig, logging.dictConfig, etc

1 个答案:

答案 0 :(得分:1)

用于免费处理器的数据结构没有区别,同时它允许添加项目,并且可以在恒定时间内选择可用项目。但是链接代码是并发的,并且实现并发堆栈比并发队列更容易和有效。

SynchronizedStack的javadoc明确地说:

  

这是一种(主要)无GC的替代品    ConcurrentLinkedQueue当要求时    创建一个可重用对象池,无需缩小池。    目的是尽快提供最低限度的所需功能    尽量少用垃圾。