Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
import java.util.concurrent.atomic.LongAdder;
Açıklaması şöyle. İstatistik toplamak için çok kullanışlı bir sınıf. AtomicLong sınıfına tercih edilebilirThis class is usually preferable to AtomicLong when multiple threads update a common sum that is used for purposes such as collecting statistics, not for fine-grained synchronization control. Under low update contention, the two classes have similar characteristics. But under high contention, expected throughput of this class is significantly higher, at the expense of higher space consumption.
- Artı tarafı çok fazla thread'in increment() veya decrement() yaptığı bir ortamda AtomicLong'dan daha iyi performans sağlıyor,
- Eksi tarafı AtomicLong'dan daha fazla bellek kullanıyor
Neden Daha İyi Performans Sağlıyor?
Açıklaması şöyle
But in a nutshell LongAdder extends Striped64 that handles contentation quit well by using hash table of cells. So when 2 threads try to put some value ,then there is good probability that both of them will end putting value in different cells. Cell class uses Padding stratergy to reduce CPU cache contentation. Moreover if you take a look on source code then you will find that cell class uses CAS.
constructor
Şöyle yaparız.LongAdder longAdder = new LongAdder();
decrement metodu
Şöyle yaparız.
increment metoduŞöyle yaparız.
longAdder.decrement();
Şöyle yaparız.
longAdder.increment();
reset metoduŞöyle yaparız.
longAdder.reset();
sum metoduŞöyle yaparız.
System.out.printf("(LongAdder) count: %d\n", longAdder
.sum());
Hiç yorum yok:
Yorum Gönder