SORU
22 EYLÜL 2010, ÇARŞAMBA


Olur ConcurrentHashMap değerleri yineleme parçacığı güvenli?

ConcurrentHashMap javadoc olarak şudur:

Alma işlemleri (dahil) genellikle blok yok, olabilir güncelleştirme işlemlerini (koy ve kaldır de dahil olmak üzere) üst üste. Bu alımlar yeni tamamlanan en güncelleştirme işlemlerinin başlaması üzerine holding sonuçlarını yansıtmaktadır. Toplama için putAll ve açık, eşzamanlı alımları gibi işlemler sadece bazı girdileri ekleme veya kaldırma yansıtıyor olabilir. Benzer şekilde, Kullanımına ve Numaralandırma ya da yineleyici/numaralandırma oluşturma beri bir noktada elemanları karma tablo durumu yansıtan dönün. ConcurrentModificationException atmak değil.Ancak, kullanımına bir anda yalnızca bir iş parçacığı tarafından kullanılmak üzere tasarlanmıştır.

Bu ne anlama geliyor? Eğer aynı anda iki iş parçacığı ile göster yineleme yapmak için çalışırsanız ne olur? Ne koyarsam olur veya yineleme sırasında harita üzerinde bir değeri kaldırmak?

CEVAP
22 EYLÜL 2010, ÇARŞAMBA


Bu ne anlama geliyor?

ConcurrentHashMap elde ettiğiniz her yineleyici tek bir iş parçacığı tarafından kullanılmak üzere tasarlanmıştır ve elden ele dolaşması gerektiği anlamına gelir. Bunun için her döngü sağlayan sözdizimsel şeker içerir.

Eğer aynı anda iki iş parçacığı ile göster yineleme yapmak için çalışırsanız ne olur?

Eğer bu konuları her biri kendi yineleyici kullanıyorsa beklendiği gibi çalışır.

Ne koyarsam olur veya yineleme sırasında harita üzerinde bir değeri kaldırmak?

(Bu "eşzamanlı ConcurrentHashMap" anlamına gelir). ne parçası bu şeyler eğer bunu yaparsanız kırmayacak garanti altına alınır Ancak, bir iş parçacığı başka bir iş parçacığı gerçekleştiren haritasında değişiklikler (haritadan yeni bir yineleyici elde olmadan) garanti yoktur. Yineleyici yaratılış anında göster durumunu yansıtmak için garanti edilir. Daha fazla değişiklik yineleyici yansıması olabilir, ama olmak zorunda değilsiniz.

Sonuç olarak, bir deyim gibi

for (Object o : someConcurrentHashMap.entrySet()) {
    // ...
}

iyi (ya da en azından güvenli) hemen hemen her zaman olacaktır görüyorsun.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • The Onion

    The Onion

    14 Mart 2006