Java atomicboolean
AtomicBoolean
is a class in Java that provides atomic operations on a boolean value. It is part of the java.util.concurrent.atomic
package and can be used to perform thread-safe operations on a shared boolean variable.
An AtomicBoolean
can be used in a multithreaded environment where multiple threads need to access and modify the same boolean value. Some of the key methods available in the AtomicBoolean
class are:
get()
: returns the current value of the booleanset(boolean newValue)
: sets the value of the boolean to the specified valuecompareAndSet(boolean expect, boolean update)
: atomically sets the value of the boolean to the specified update value if the current value is equal to the specified expect value
Here's an example of using AtomicBoolean
in Java:
import java.util.concurrent.atomic.AtomicBoolean; public class Example { public static void main(String[] args) { // create a new atomic boolean with an initial value of true AtomicBoolean flag = new AtomicBoolean(true); // check the value of the flag boolean value1 = flag.get(); System.out.println("Value1: " + value1); // set the value of the flag to false flag.set(false); // check the value of the flag again boolean value2 = flag.get(); System.out.println("Value2: " + value2); // atomically set the value of the flag to true if the current value is false boolean updated = flag.compareAndSet(false, true); System.out.println("Updated: " + updated); } }
In this example, we create a new AtomicBoolean
with an initial value of true. We then use the get()
method to check the current value of the boolean, and the set()
method to set the value of the boolean to false. We then use the get()
method again to check the current value of the boolean.
Finally, we use the compareAndSet()
method to atomically set the value of the boolean to true if the current value is false. This method returns a boolean value indicating whether the update was successful.
AtomicBoolean
is a useful class for situations where multiple threads need to access and modify the same boolean value in a thread-safe manner. It can be used in a variety of applications, such as state machines, coordination between threads, and more.