11 Eylül 2017 Pazartesi

AtomicLong Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.concurrent.atomic.AtomicLong;
Bu sınıf yerine LongAdder tercih edilebilir

constructor
Şöyle kullanırız
final AtomicLong counter = new AtomicLong(); //0 olarak başlar.
constructor
Şöyle yaparız
AtomicLong counter = new AtomicLong  (ThreadLocalRandom.current().nextLong());
updateAndGet metodu
Eski değere bakarak yeni bir değer atama imkanı sağlar

Örnek
Şöyle yaparız. Eğer yeni değer, mevcut değere göre >= ise yeni değer atanır, değilse eski değer atanır. Yeni değeri dönerse işlem başarılıdır.
boolean setIfEqualOrGreaterThan(AtomicLong oldValue, long newValue) {
  return oldValue.updateAndGet(current -> 
    (newValue >= current) ? newValue : current) == newValue;
}

Hiç yorum yok:

Yorum Gönder