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