我正在使用LinkedBlockingQueue作为我的threadPool
new ThreadPoolExecutor(20,
21,
10,
TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>())
我遭受内存泄漏Bug(内存中充满了LinkedBlockingQueue节点,逐渐减慢),这在JDK 7中得到修复。
我现在不想改变运行时环境或我的JDK。
LinkedBlockingQueue没有大小限制,与BlockingQueue Interface的其他实现不同。你能建议一个替代队列吗?
答案 0 :(得分:4)
你链接到的修复bug-id也被反向移植到Java 6.自Java 6 Update 19以来已在Java 6中修复,请参阅http://bugs.sun.com/view_bug.do?bug_id=2186685(这个是关于你引用的bug的BTW链接)。
答案 1 :(得分:2)
ArrayBlockingQueue
由固定大小的数组支持。
PriorityBlockingQueue
- 它是一个无界阻塞,优先级队列的元素按照它们的自然顺序排序,或者由队列构建时提供的比较器排序。