From cc77a47d70af86837e66c1f850c9f717e1fa5765 Mon Sep 17 00:00:00 2001 From: currenjin Date: Tue, 21 Jan 2025 22:48:53 +0900 Subject: [PATCH] Feat: Atom --- .../java/com/currenjin/concurrency/Atom.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 the-well-grounded-java-developer/src/main/java/com/currenjin/concurrency/Atom.java diff --git a/the-well-grounded-java-developer/src/main/java/com/currenjin/concurrency/Atom.java b/the-well-grounded-java-developer/src/main/java/com/currenjin/concurrency/Atom.java new file mode 100644 index 0000000..aab4a69 --- /dev/null +++ b/the-well-grounded-java-developer/src/main/java/com/currenjin/concurrency/Atom.java @@ -0,0 +1,25 @@ +package com.currenjin.concurrency; + +public class Atom { + private volatile int value; + + public Atom(int value) { + this.value = value; + } + + public final int incrementAndGet() { + while(true) { + int current = value; + int next = current + 1; + if (compareAndSet(current, next)) { + return next; + } + } + } + + private boolean compareAndSet(int expected, int newValue) { + return true; + // CPU 명령 + // return unsafe.compareAndSwapInt(this, valueOffset, expected, newValue); + } +}