15 Mayıs 2015 Cuma

CopyOnWrite Veri Yapıları

Giriş
Java'da eş zamanlılık için kullanılan ilginç veri yapılarından bir tanesi de CopyOnWrite veri yapıları. Bu yapılar arasında CopyOnWriteArray sayılabilir.

Collections.synchronizedList(list)

gibi bir kod parçası thread-safe bir veri yapısı döndürür. Ancak bu veri yapısı hem okuma hem de yazma işleminde kilitlendiği için az yazma çok okuma işlemlerinden boşu boşuna kodu yavaşlatır.

CopyOnWrite veri yapıları az yazma çok okuma işlemlerinde daha hızlı çalışırlar. Sebebi ise okuma işleminde hiç kilit atılmaması, sadece write işleminde veri yapısının bütün kopyasının çıkarılarak yeni elemanın eklenmesidir.

Iterator
CopyInWrite veri yapılarının iterator nesneleri de thread safe olarak kullanılabilir. Örnek kodda myList CopyOnWriteArrayList olduğu için sorun çıkmaz.
List<MyObject> result =  
myList.stream().filter(myobj->myobjt.isValid()).collect(toList());


Hiç yorum yok:

Yorum Gönder