ConcurrentModificationException, bir nesne izin verilmediği halde aynı anda değiştirilmeye çalışıldığında oluşur. Bu istisna genellikle Java Collection sınıflarıyla çalışırken ortaya çıkar. Örneğin - Başka bir iş parçacığı üzerinde yinelenirken bir iş parçacığının bir Koleksiyonu değiştirmesine izin verilmez.
Eşzamanlı değişiklik istisnasını nasıl düzeltirim?
Tek iş parçacıklı bir ortamda Eşzamanlı Değişiklik İstisnasını da önleyebiliriz. Nesneyi temel alınan koleksiyon nesnesinden kaldırmak için Yineleyicinin kaldırma yöntemini kullanabiliriz. Ancak bu durumda, listeden başka bir nesneyi değil, yalnızca aynı nesneyi kaldırabilirsiniz.
Haritada eşzamanlı değişiklik istisnasını nasıl önlersiniz?
use ConcurrentHashMap. basit HashMap kullanmaya devam edin, ancak her değişiklikte yeni bir harita oluşturun ve arka planda haritalar arasında geçiş yapın (anahtar işlemini senkronize ederek veya AtomicReference kullanarak)
Hangi yineleyici yöntemi eşzamanlı değişiklik istisnası atar?
Sözleşmesini ihlal eden bir nesne üzerinde bir dizi yöntem çağırırsak, nesne ConcurrentModificationException'ı atar. Örneğin: koleksiyon üzerinde yineleme yaparken, bu koleksiyonu doğrudan değiştirmeye çalışırsak, verilen fail-fast yineleyici bu ConcurrentModificationException'ı atar.
Java yığın taşmasındaki eşzamanlı değişiklik istisnası nedir?
Tek bir iş parçacığı, bir nesnenin sözleşmesini ihlal eden bir dizi yöntem çağrısı yayınlarsa, nesne bu istisnayı atabilir. Örneğin, bir iş parçacığı, başarısız hızlı bir yineleyici ile koleksiyon üzerinde yinelenirken bir koleksiyonu doğrudan değiştirirse, yineleyici bu istisnayı atar.