SORU
4 Mart 2009, ÇARŞAMBA


ThreadLocal değişkeninin performans

Ne kadar ThreadLocal değişken normal alandan daha yavaş okunur?

Daha somut bir biçimde basit nesne oluşturma daha hızlı ya da daha yavaş ThreadLocal değişken girmek daha mı?

Ben ThreadLocal<MessageDigest> örnek olması çok daha hızlı MessageDigest örnek her zaman yaratıyor, böylece yeterince hızlı olduğunu varsayalım. Ama aynı zamanda, örneğin byte[10] ya da byte[1000] için de geçerli mi?

Edit: Soru gerçekten ThreadLocal's? çağrılırken olan bir şey. Eğer sadece bir alan ise, diğerleri gibi, o zaman cevap "her zaman en hızlı", değil mi?

CEVAP
4 Mart 2009, ÇARŞAMBA


Modern Jvm'ler uygulamak ThreadLocal İplik unsynchronised bir HashMap kullanarak.() currentThread nesne. Bu oldukça hızlı bir şekilde (sanki hızlı düzenli bir alan erişim kullanarak, tabii ki değil, yaklaşık olarak ThreadLocal nesne İplik öldüğünde toparladım alır sağlayarak yapar.

Tabii ki, yeni Nesne de çok hızlı bu günlerde, Çöp Toplayıcıları da kısa ömürlü nesneler geri ödemelerine de çok iyi.

Sürece emin nesne oluşturma olacak pahalı, ya da ihtiyaç için ısrar bazı devlet üzerinde bir iş parçacığı tarafından iplik olarak, size daha iyi için basit ayırmak gerektiğinde çözüm, ve sadece geçiş için bir ThreadLocal uygulama ne zaman bir profiler size gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • TomSka

    TomSka

    30 Mayıs 2006
  • YAN TV

    YAN TV

    20 EKİM 2011