Atomic variables were introduced in Java version 5 to provide atomic operations on single variables. When you work with a normal variable, each operation that you implement in Java is transformed into several instructions of Java byte code that is understandable by the JVM when you compile the program. For example, when you assign a value to a variable, you only use one instruction in Java; however, when you compile this program, it is transformed into various instructions in the JVM language. This can lead to data inconsistency errors when you work with multiple threads that share a variable.
To avoid these problems, Java introduced atomic variables. When a thread is doing an operation with an atomic variable and if other threads want to do an operation with the same variable, the implementation of the class includes a mechanism to check that the operation is done atomically. Basically, the...