2013-03-17 57 views
6

Java中有同步的Queue类吗?我正在寻找像Vector(这是同步)与ArrayList(这不是),但不是实现List接口,我正在寻找它来实现QueueJava中是否存在同步队列?

请注意,没有Collections.synchronizedQueue方法来包装未同步队列并使其同步。

+0

ConcurrentLinkedDeque – delicateLatticeworkFever 2013-03-17 12:44:11

+0

如果你通过扩展类的文档https://docs.oracle.com/javase/7/docs/api/java/util/AbstractQueue.html你可能会发现你在找什么。和https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html http://stackoverflow.com/questions/2695426/are-linkedblockingqueues-insert-and-remove-方法线程安全 – rogerdpack 2015-04-08 19:37:08

+0

这似乎是一个非常有效的问题,因为Queue在这方面似乎与其他Java集合不同。我打算要求重新开放,编辑后稍微澄清一下问题。 – rghome 2017-12-04 13:54:39

回答

7

看看ArrayBlockingQueue和另一BlockingQueue实现。

从文档:

队列支持两个附加等待获取元素时队列变为非空,并等待空间在队列中存储元素时成为可用的操作。

+0

这是一个阻塞队列,它不是被请求的。 – rghome 2017-12-04 13:55:41

+0

@rghome我相信OP想找到线程安全的实现,在这种情况下,我的答案是正确的 – bsiamionau 2017-12-05 05:15:05

+1

我担心阻塞行为。如果阅读器/写入器阻塞,那么这是与标准非阻塞队列中非常不同的行为。但是阅读API,我认为这是可选的,你也可以读/写非阻塞。所以你是对的。 – rghome 2017-12-05 08:15:51