当我阅读Tomcat source code时,我发现堆栈正用于处理器对象缓存。为什么SynchronizedStack
优先于ConcurentLinkedQueue
logging.basicConfig, logging.dictConfig, etc
?
答案 0 :(得分:1)
用于免费处理器的数据结构没有区别,同时它允许添加项目,并且可以在恒定时间内选择可用项目。但是链接代码是并发的,并且实现并发堆栈比并发队列更容易和有效。
SynchronizedStack的javadoc明确地说:
这是一种(主要)无GC的替代品
ConcurrentLinkedQueue
当要求时 创建一个可重用对象池,无需缩小池。 目的是尽快提供最低限度的所需功能 尽量少用垃圾。