ArrayList'i döndüren bir Java'da paylaşılan bir kitaplık kullanıyorum; Ben üzerinde yineleme olarak, bir ConcurrentModificationException atılmış olabilir ve güvenli olması için% 100 (?) garanti arıyorum. Aşağıdaki gibi bir şey üzerinde düşünüyordum ve herhangi bir girdi için minnettarım.Güvenli olmayan ArrayList açığa çıktısını taşıyan çok iş parçacıklı kütüphanesi
Veri_listesi, MT kitaplığından döndürülen ArrayList <> dur.
boolean pass = true;
ArrayList<Something> local = new ArrayList<Something>(256);
for (int spin=0; spin<10; ++spin)
{
try {
local.addAll(data_list);
}
catch (java.util.ConcurrentModificationException ce) {
pass = false;
}
finally {
if (pass) break;
pass = true;
}
}
yerel ameliyat gerektiğini, nasıl pass
true
olan değişken varsayarsak?
Çok iş parçacıklı bir kitaplık, ortaya çıktıktan sonra değiştirmeyi sürdürdüğü eşzamanlı olmayan bir koleksiyon ortaya çıkarır? Bence en iyi bahisten başka bir kütüphaneye geçmek. –
Sorduğunuz soruya bir cevap değil, ancak bir arraylist diğerine kopyalanıyorsanız, hedefin başlangıç boyutunun sabit değil, yerel kaynak boyutuna eşit olması genellikle daha verimlidir. = new ArrayList <> (data_list.size()); 'sadece 256'yi kullanmak yerine. – Jules
@Theodoros ile aynı fikirdeyim, kütüphaneyi yanlış bir şekilde kullanmaya çalışmadığınızdan emin misiniz? Bu kütüphanenin kendisinin kötü tasarımı gibi görünüyor. – cjstehno