java.util.concurrent.atomic.AtomicBoolean是否没有可以自动取反/反转值的方法?我可以换一种方式吗?我错过了什么吗? 最佳答案 有点老了……但是真的觉得答案不是很好。如果说这在硬件中不常见或仅有用,我会完全不同意。您可能希望多个线程以相同的可能性切换单个变量......我使用AtomicLong来制作一个假boolean值。这是从JMSMessageListener中采用的,我需要一半时间响应特定消息,另一半时间响应另一种类型。publicclassMock{privatestaticAtomi
AtomicBoolean的OracleJDKJavadoc声明:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.htmlAbooleanvaluethatmaybeupdatedatomically.Seethejava.util.concurrent.atomicpackagespecificationfordescriptionofthepropertiesofatomicvariables.AnAtomicBooleanisusedinapplications
我如何使用AtomicBoolean以及该类的用途是什么? 最佳答案 当多个线程需要检查和更改boolean值时。例如:if(!initialized){initialize();initialized=true;}这不是线程安全的。您可以使用AtomicBoolean来修复它:if(atomicInitialized.compareAndSet(false,true)){initialize();} 关于java-我什么时候需要在Java中使用AtomicBoolean?,我们在Sta
AtomicBoolean做了哪些volatileboolean无法实现的功能? 最佳答案 当所述字段仅由其所有者线程更新并且该值仅由其他线程读取时,我使用volatile字段,您可以将其视为发布/订阅场景,其中有许多观察者但只有一个发布者。但是,如果这些观察者必须根据字段的值执行一些逻辑,然后推回一个新值,那么我会使用Atomic*vars或锁或同步块(synchronizedblock),只要最适合我。在许多并发场景中,它归结为获取值,将其与另一个值进行比较并在必要时进行更新,因此Atomic*类中存在compareAndSet
AtomicBoolean做了哪些volatileboolean无法实现的功能? 最佳答案 当所述字段仅由其所有者线程更新并且该值仅由其他线程读取时,我使用volatile字段,您可以将其视为发布/订阅场景,其中有许多观察者但只有一个发布者。但是,如果这些观察者必须根据字段的值执行一些逻辑,然后推回一个新值,那么我会使用Atomic*vars或锁或同步块(synchronizedblock),只要最适合我。在许多并发场景中,它归结为获取值,将其与另一个值进行比较并在必要时进行更新,因此Atomic*类中存在compareAndSet