Junior — Middle
Can an increment operation on a variable be executed as an indivisible action in a multithreaded environment?
sobes.tech AI
Answer from AI
The operation of increasing a variable's value (e.g., i++) in Java is not atomic and does not execute as an indivisible action in a multithreaded environment. This operation consists of several steps: reading the value, incrementing, and writing back.
In a multithreaded environment, this can lead to a race condition where multiple threads read and modify the variable simultaneously, resulting in incorrect outcomes.
To make the operation atomic, you can use the AtomicInteger class from the java.util.concurrent.atomic package:
import java.util.concurrent.atomic.AtomicInteger;
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet(); // atomic increment
Alternatively, synchronize access to the variable using the synchronized keyword.