2

我正在为我的线程池使用LinkedBlockingQueue

new ThreadPoolExecutor(20, 
                       21, 
                       10,
                       TimeUnit.SECONDS, 
                       new LinkedBlockingQueue<Runnable>())

而且我遇到了内存泄漏错误(内存中充满了 LinkedBlockingQueue 节点,逐渐变慢),这在 JDK 7 中已修复。

我现在不想更改运行时环境或我的 JDK。

与 BlockingQueue 接口的其他实现不同,LinkedBlockingQueue 没有大小限制。你能建议任何替代队列吗?

4

2 回答 2

4

您链接到的修复 bug-id 也已向后移植到 Java 6。自 Java 6 Update 19 以来,它已在 Java 6 中得到修复,请参阅http://bugs.sun.com/view_bug.do?bug_id=2186685(这个顺便说一句,与您提到的错误有关)。

于 2013-01-09T12:39:13.507 回答
2

ArrayBlockingQueue它由固定大小的数组支持。

PriorityBlockingQueue- 这是一个无界阻塞,这里优先级队列的元素根据它们的自然顺序排序,或者由队列构建时提供的比较器排序。

于 2013-01-09T12:38:33.840 回答