假设我有一个Set
和另一个Queue
。我想检查set
是否包含(Element)
,如果不add(element)
到队列
>。我想以原子方式执行这两个步骤。
一种明显的方法是使用synchronized
block 或Lock.lock()/unlock()
方法。在线程争用的情况下,这些都会导致上下文切换。是否有任何简单的设计策略可以以非阻塞的方式实现这一点?可能正在使用一些原子结构?
最佳答案
我认为除了您自己指出的机制之外,您不能依赖任何机制,因为您正在两种结构上进行操作。
对一个数据结构上的并发/原子操作有很好的支持(例如ConcurrentHashMap中的“如果不存在则放入”),但是对于一系列操作,您要么被锁所困或同步块(synchronized block)。
关于java - 在 Java 中以原子方式执行一对操作的非阻塞策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196122/