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

  • captainpuppys2000

    captainpuppy

    20 HAZİRAN 2013
  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • jesiel santos

    jesiel santo

    15 Ocak 2009