mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-18 17:20:54 +07:00
20 lines
513 B
Java
20 lines
513 B
Java
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
|
|
import java.util.function.BiFunction;
|
|
|
|
class Atomics {
|
|
private volatile long num;
|
|
private static final AtomicLongFieldUpdater<Atomics> updater =
|
|
AtomicLongFieldUpdater.newUpdater(Atomics.class, "num");
|
|
|
|
public long getLong() {
|
|
return updater.get(this);
|
|
}
|
|
|
|
public long getAndSet(long n) {
|
|
return update(updater::getAndSet, n);
|
|
}
|
|
|
|
private long update(BiFunction<Atomics, Long, Long> f, long n) {
|
|
return f.apply(this, n);
|
|
}
|
|
} |