SORU
27 Ocak 2011, PERŞEMBE


Atomicİnteger için pratik kullanır

Ben de biraz Atomicİnteger ve diğer Atomik değişkenler eşzamanlı erişim sağlayan anlıyorum. Ne durumda bu sınıf genellikle olsa kullanılır?

CEVAP
27 Ocak 2011, PERŞEMBE


AtomicInteger iki ana kullanımı vardır:

  • Çok iş parçacığı tarafından kullanılan atom sayacı (incrementAndGet(), vs.) eş zamanlı olarak

  • Bir ilkel olarak engellenmeyen algoritmaları uygulamak compare-and-swap Yönerge (compareAndSet()) destekler.

    Burada engellenmeyen Brian Göetz's Java Concurrency In Practice generator: rasgele sayı örneği

    public class AtomicPseudoRandom extends PseudoRandom {
        private AtomicInteger seed;
        AtomicPseudoRandom(int seed) {
            this.seed = new AtomicInteger(seed);
        }
    
        public int nextInt(int n) {
            while (true) {
                int s = seed.get();
                int nextSeed = calculateNext(s);
                if (seed.compareAndSet(s, nextSeed)) {
                    int remainder = s % n;
                    return remainder > 0 ? remainder : remainder   n;
                }
            }
        }
        ...
    }
    

    Gördüğünüz gibi, neredeyse incrementAndGet() ama keyfi olarak hesaplama yapar (calculateNext()) artım (ve dönüş sonucu işlemler) yerine aynı şekilde çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • Exalto_Gamer

    Exalto_Gamer

    15 EKİM 2014
  • RFS Dan

    RFS Dan

    22 Temmuz 2014