gibi ConcurrentLinkedQueue, ConcurrentLinkedDequeue ve ConcurrentSkipListSet aşağıdaki reddi ile gelen Java standart kütüphanesindeki en koleksiyonların belgeler: Çoğu koleksiyonlarında farklı olarakEşzamanlı toplama boyutu hesaplama
sakının, boyut yöntemi değil sabit zamanlı çalışma. Bu kümelerinin asenkron doğası nedeniyle, geçerli eleman sayısını belirlemek, öğelerin geçişini gerektirir ve bu nedenle, bu koleksiyonu geçiş sırasında değiştirilirse hatalı sonuçlar bildirebilir.
Bu ne anlama geliyor? Neden bir sayaç tutmuyorlar (örneğin, bir AtomicInteger) ve sadece size()
numarasına yapılan çağrıları geri getiremiyorlar?
Sayacın senkronize olması ve bu nedenle bir tıkama noktası oluşturması nedeniyle mi?
Bir yan not olarak, ConcurrentHashMap bu sorun yok gibi görünüyor. Neden? Kaynak koduna bakıldığında, size()
numaralı çağrılara toplanan bir dizide tutulan çoklu sayıcıları kullanıyor gibi görünüyor. Boğaz noktasını atlatmak mı yoksa başka bir sebep mi var?
kesinlikle kötü olurdu. – ZhongYu