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
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.
Güvenli bir java değerleri elde etmekt...
Nerede iş parçacığı için güvenli bir C...
Neden Listesi<T> iş parçacığı iç...
Yineleme şablonu modeli örnek alan adl...
İş parçacığı güvenli koleksiyonlarında...