SORU
18 EKİM 2010, PAZARTESİ


Java AtomicReference ne zaman kullanılır?

Ne zaman AtomicReference kullanırız. Tüm parçacıklı programlarda nesneleri oluşturmak için gereklidir. AtomicReference kullanılmalıdır basit bir örnek verebilir misiniz.

CEVAP
18 EKİM 2010, PAZARTESİ


Atom referans monitor tabanlı eşitleme için uygun değil başvuru, basit atom (örneğin, iş parçacığı güvenli ve non-önemsiz) işlemleri yapmak için gereken bir ortamda kullanılmalıdır. Eğer nesnenin durumunu son kontrol olarak kalırsa, sadece belirli bir alan olmadığını görmek için kontrol etmek istediğinizi varsayalım:

AtomicReference<Object> cache = new AtomicReference<Object>();

Object cachedValue = new Object();
cache.set(cachedValue);

//... time passes ...
Object cachedValueToUpdate = cache.get();
//... do some work to transform cachedValueToUpdate into a new version
Object newValue = someFunctionOfOld(cachedValueToUpdate);
boolean success = cache.compareAndSet(cachedValue,cachedValueToUpdate);

Atom referans mantığı yüzünden, Eğer cache nesne synchronized kullanmadan iş parçacıkları arasında paylaşılan, varsa bile bunu yapabilirsiniz. Genel olarak, ne yaptığınızı bilmiyorsanız bir eşitleyici veya java.util.concurrent çerçeve kullanmak yerine 5* *çıplak daha iyi olursun.

Bu konu tanıtacağım ölü ağaç iki mükemmel referanslar: Herlihy's excellent Art of Multiprocessor Programming Java Concurrency in Practice.

Not (bilmiyorum bu her zaman true) başvuru atama (yani, =) kendisi atom (güncelleme ilkel 64-bit türleri(uzun/çift) olmayabilir atom; ama güncelleme bir referanstır her zaman atom, olsa bile 64 bit) olmadan açıkça kullanarak bir Atomic*. JLS 3ed, Section 17.7, bkz

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • sonia989

    sonia989

    26 EKİM 2006