Java队列和线程安全

标签 java thread-safety queue

我正在寻找一个不允许重复元素的队列(旧的重复元素总是被删除,并且在队列末尾添加新元素)。并且是线程安全的。第一个线程正在向队列添加元素,第二个线程正在读取和删除元素。 标准 java 库或 guava/apache 中有什么有用的东西吗?

最佳答案

例如,您可以使用 Guava 的 Forwarding{,Blocking}{Queue,Deque}

然后您要做的就是将 HashSet 作为实现的一部分,您可以尝试从中尝试 .add() 新元素;如果 .add() 返回 false,则不添加到委托(delegate)。

当然,当您从队列中删除元素时,也不要忘记从集合中.remove()!

(假设这里的“重复”指的是“are .equals()”;另一方面,如果您使用 PriorityQueue,您将需要使用 TreeSet 代替)

关于Java队列和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23041467/

相关文章:

multithreading - 具有静态互斥量和线程安全性的静态成员

ruby - 在此 Ruby 线程示例中使用队列而不是数组有什么意义吗?

ruby-on-rails - 使用 sidekiq 处理两个单独的 redis 实例?

java - JUnit 测试总是回滚事务

java - Spring MVC 在带点的 URL 上返回 HTTP 406

c# - "thread safe"的真正含义......在实际中

Java 线程 - 线程局部变量

javascript - 是否可以在 Kue Node.js 中更新已创建的作业?

java - [持久性异常 : Error getting sequence nextval]

java - Java 中的 MVVM 模式