我想将 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,它需要额外的串行访问同步: