Mark As Completed Discussion

Atomic Variables

In concurrent programming, atomic variables are special types of variables that ensure atomicity of operations, meaning they provide a way to perform operations on the variable as if they are executed atomically, without interference from other threads.

One common use case of atomic variables is for implementing thread-safe counters. The java.util.concurrent.atomic.AtomicInteger class provides a way to create an integer variable that can be safely accessed and modified by multiple threads.

Here's an example that demonstrates the usage of AtomicInteger to implement a thread-safe counter:

TEXT/X-JAVA
1import java.util.concurrent.atomic.AtomicInteger;
2
3public class Main {
4    public static void main(String[] args) {
5        AtomicInteger counter = new AtomicInteger(0);
6
7        Thread t1 = new Thread(() -> {
8            for (int i = 0; i < 1000; i++) {
9                counter.incrementAndGet();
10            }
11        });
12
13        Thread t2 = new Thread(() -> {
14            for (int i = 0; i < 1000; i++) {
15                counter.incrementAndGet();
16            }
17        });
18
19        t1.start();
20        t2.start();
21
22        try {
23            t1.join();
24            t2.join();
25        } catch (InterruptedException e) {
26            e.printStackTrace();
27        }
28
29        System.out.println("Counter value: " + counter.get());
30    }
31}
JAVA
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment