java - 在 Java 中以原子方式执行一对操作的非阻塞策略

标签 java atomic nonblocking

假设我有一个Set和另一个Queue。我想检查set是否包含(Element),如果不add(element)队列 >。我想以原子方式执行这两个步骤。

一种明显的方法是使用synchronized block 或Lock.lock()/unlock()方法。在线程争用的情况下,这些都会导致上下文切换。是否有任何简单的设计策略可以以非阻塞的方式实现这一点?可能正在使用一些原子结构?

最佳答案

我认为除了您自己指出的机制之外,您不能依赖任何机制,因为您正在两种结构上进行操作。

一个数据结构上的并发/原子操作有很好的支持(例如ConcurrentHashMap中的“如果不存在则放入”),但是对于一系列操作,您要么被锁所困或同步块(synchronized block)。

关于java - 在 Java 中以原子方式执行一对操作的非阻塞策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196122/

相关文章:

Java 非阻塞 HTTP 服务器

java - java新手,while循环?

java - ByteBuffer 可以实现 DataOutput/DataInput 吗?

hadoop - 哪些 HDFS 操作是原子的?

java - 线程中断未结束对输入流读取的阻塞调用

c - 非阻塞 FIFO : detect if a reader exists?

java - 如何确定返回了哪个 SQLException/错误代码列表在哪里?

Java 未排序的 double ArrayList,如何获取最高值的索引?

c++ - C++ std::atomic 在程序员级别有什么保证?

OpenMP 原子比较和交换