Başlamadan önce….
ThreadLocal, şunlara cevabınızdır: -
Nesnenin iş parçacığı açısından güvenli olmasını ancak aynı zamanda uygulamanızın performansını engellememesini istiyorsanız.
Her yeni iş parçacığı görevi atandığında yeni bir nesne oluşturmak istemiyorsanız.
Aynı nesneyi, nesneyi gerçekte parametre olarak iletmeden birden çok yöntem çağrısı arasında paylaşmak istiyorsanız.
Çok iş parçacıklı bir ortamda daha iyi ve temiz bir kod yazın.
Bu sizi heyecanlandırıyorsa, derin bir dalış yapalım!
Her iş parçacığı isteği için yeni bir nesne oluşturduğunuz yukarıdaki durumu göz önünde bulundurun. Gerçeğe rağmen, bu uygulama işe yarayabilir, çok sayıda talebin yerine getirilmesi gerektiğinde kullanılması çok verimsizdir.
Örneğin 1000 yeni iş parçacığı için 1000 yeni nesne oluşturulacaktır.
Günde milyonlarca talebe hizmet eden bir uygulama için düşünürsek mümkün olur mu?
Her yeni istek için iş parçacığı oluşturma sorununun üstesinden gelmek için İş Parçacığı Havuzlarını kullanıyoruz.
İş parçacığı havuzlarını kullanarak, kullanılabilen ve görevlere sayısız kez tahsis edilebilen önceden tanımlanmış sayıda iş parçacığı oluşturuyoruz, böylece genel iş parçacığı döngüsü ek yükünü azaltıyoruz.
Öte yandan, tüm insanlar aynı anda bilgisayara erişebilirse, hiç kimse istenen çıktıyı alamaz. Bunlar senkronize olmayan nesnelerdir.
ThreadLocal, genel sistem tasarımınızdan ödün vermeden eşzamanlılık sağlayan iş parçacığı başına verilere sahip olmanızı sağlar.
Artık nesneleri bağımsız değişken olarak iletmeniz gerekmediğinden kod karmaşıklığını azaltır. Birden çok hizmetin aynı nesne verilerine erişmek istediği senaryoda, ConcurrentHashMap gibi herhangi bir veri yapısını kullanmadan iş parçacığını kullanarak ona kolayca erişebilir.
Her iş parçacığı isteği için yeni nesneler oluşturulmadığından bellek verimliliğini / etkinliğini artırır.
İş parçacığı güvenliği, ayrı ayrı ele alınması gereken bir sorun olmayacak, böylece geliştiricilerin verimliliğini artıracak ve program, hatalara / hatalara daha az eğilimlidir.
Not: - Çok iş parçacıklı bir uygulama geliştirirken ThreadLocal nesneleri kullanışlı olsa da, onu akıllıca kullanmak ve ThreadLocal nesnelerini temizlemek gerçekten önemlidir, aksi takdirde, bulunduğunuz durumda bellek sızıntıları nedeniyle bir java.lang.OutOfMemoryError hatası alabilirsiniz. uygulama sunucuları tarafından yönetilen İş Parçacığı Havuzunu kullanarak.
Bu yazıda ThreadLocal kullanmanın yararlı olduğu durumları ve avantajlarını tartıştık. Umarım makaleyi beğenmişsindir. Gelecek makalede, ThreadLocal'ın uygulanmasına yardımcı olacak bir kod parçacığı alarak yukarıdaki kavramları netleştirmeye çalışacağım.
Herhangi bir sorunuz varsa aşağıdaki yorum bölümünde çekinmeden çekin. Umarım ileride harika bir gün geçirirsiniz :)
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Kasım 2020'nin başlarında SalesForce, açıklanamayacak şekilde JARM adlı yeni bir aktif TLS parmak izi alma aracını duyurdu. JARM'ın temeli, bir hedef sunucu özel olarak hazırlanmış çeşitli farklı TCP "İstemci merhaba" paketleri kullanılarak tarandığında, elde edilen yanıtların birleştirilip, paylaşılan veya benzer bir uygulama veya sunucunun göstergesi olan bir parmak izi sağlamak için karma hale getirilebilmesidir. yığını.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.