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

  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Phymec

    Phymec

    18 Temmuz 2009
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009