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

  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • YouChewBu

    YouChewBu

    26 Ocak 2009