我想将 CircularFifoQueue 与 spring ExecutorService 一起使用。

以下不能编译,因为 CircularFifoQueue 不是 BlockingQueue 类型。但它显示了我正在努力实现的目标:

int threads = 10;
int queueSize = 500;
new java.util.concurrent.ThreadPoolExecutor(threads, threads, 0L, TimeUnit.MILLISECONDS,
                new CircularFifoQueue(queueSize));

和:
package org.apache.commons.collections4.queue;

public class CircularFifoQueue<E> extends AbstractCollection<E>
       implements Queue<E>, BoundedCollection<E>, Serializable

问题:上面的代码是否提供线程安全(因为 CircularFifoQueue 本身不是线程安全的)?
如果没有,我怎样才能使它线程安全?

最佳答案

您可以使用 commons-collections QueueUtils.synchronizedQueue 进行同步
Queue queue = QueueUtils.synchronizedQueue(new CircularFifoQueue());
但是根据javadoc,它需要额外的串行访问同步:

10-07 22:34