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

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007