Atomic Boolean
Get a clear understanding and use cases of the AtomicBoolean class and its differences with volatile boolean variables.
We'll cover the following
If you are interviewing, consider buying our number#1 course for Java Multithreading Interviews.
Explanation
The AtomicBoolean
class belonging to Java’s java.util.concurrency.atomic
package represents a boolean value that can be updated and modified atomically. The Atomic*
family of classes extend the notion of volatile
variables that are designed to be operated upon without locking using machine-level atomic instructions available on modern processors. However, on other platforms some form of internal locking may be used to serialize thread access.
Atomic*
classes including AtomicBoolean
offer a method compareAndSet(expectedValue, updatedValue)
to conditionally update the value of the variable to updatedValue
if it is set to expectedValue
in one go, i.e. atomically. All read-and-update methods except for lazySet()
and weakCompareAndSet()
have memory effects equivalent of both reading and writing volatile
variables.
The read and write methods i.e. get()
and set()
on instances of this class are similar in behavior to volatile variables i.e get()
has the memory effect of reading a volatile variable and set()
has the memory effect of writing a volatile variable.
Create a free account to view this lesson.
By signing up, you agree to Educative's Terms of Service and Privacy Policy