AtomicBoolean 做了哪些 volatile boolean 无法实现的功能?
最佳答案
当所述字段仅由其所有者线程更新并且该值仅由其他线程读取时,我使用 volatile 字段,您可以将其视为发布/订阅场景,其中有许多观察者但只有一个发布者。但是,如果这些观察者必须根据字段的值执行一些逻辑,然后推回一个新值,那么我会使用 Atomic* vars 或锁或同步块(synchronized block),只要最适合我。在许多并发场景中,它归结为获取值,将其与另一个值进行比较并在必要时进行更新,因此 Atomic* 类中存在 compareAndSet 和 getAndSet 方法。
查看 java.util.concurrent.atomic 的 JavaDocs包含 Atomic 类列表的包,并很好地解释了它们的工作原理(刚刚了解到它们是无锁的,因此它们比锁或同步块(synchronized block)更有优势)
关于java - volatile boolean 值与原子 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786825/