Kodu inceledim, her şey int - CountDownLatch yapıcısına iletilen parametre int, Sync değişkenidir int, Sync.getCount() dönüş türü int'dir. Ama CountDownLatch.getCount() uzun bir süre verir? Nedenini merak etmek.Neden CountDownLatch.getCount() çok uzun bir int döndürür?
cevap
Bu soruyu yanıtlayan bir kişi yanıt vermedikçe, bu soruya yeterli bir yanıt bulacağınızı bilmiyorum, ancak bunun "hata ayıklama ve sınama" olduğunu söylüyor.
public long getCount() {...} // just for debugging and testing
Futureproofing?
Sadece var olan tek yapıcı CountDownLatch (int) olduğundan, bu herhangi bir şey için bir kullanıcı ile birlikte gelirse, Java 8'de CountDownLatch (uzun) ekleyemediğiniz anlamına gelmez.
Değer, yalnızca güvenilir değil, yalnızca belirleyicidir.
Bunun nedeni, int'nin işaretsiz bir int saklamak için kullanıldığından, 0 ile 2 ** 32-1 arasında sayılmasıdır. Bir imzasız int'i bir int'ye kaydedebilmenize rağmen, onunla hesaplamalar yaparken, bu değeri oldukça doğal bir şekilde karşılayabilecek bir değeri uzun süre yükseltmek çok daha kolaydır.
Teşekkürler, bu çok açıklıyor. – DeepNightTwo
Farklı bir fikrim var: basit gözetim.
Kaynak koduna döndüğünüzde, uygulamanın bir iç sınıf Sync kullandığını göreceksiniz. Senkronizasyon da bir getCount() 'a sahiptir ve bu int int döndürür. Başka bir deyişle: tüm uygulama int'ye dayanmaktadır; ve sadece bir dış alıcı uzun kullanıyor. Sanırım bunun içinde kesinlikle bir anlamı yok.
yep ... Multithread env'de, bu değer güvenilir değildir. Bu arayışa sadece neden uzun sürdüğünü merak etmesini rica ediyorum ... Teşekkürler! – DeepNightTwo