Programlamada, değişken içeriğini iletmek için metod parametreleri tanımlar; eğer yürütme yöntemi seviyesi derinse, her yöntem geçilecek parametreleri tanımlamalıdır, bu noktada bazı değişkenler ThreadLocal üzerinden geçirilebilir, tüm yöntemler aynı iş parçacığında çalıştırıldıysa, ThreadLocal değeri ayarlanabilir ve okunabilir.
ThreadLocal sınıfı, iş parçacığında yerel değişkenler sağlamak için kullanılır. Bu değişkenler çok iş parçacıklı bir ortamda erişildiğinde (get/set) olduğunda, her iş parçacığındaki değişkenler diğer iş parçacıklarındaki değişkenlerden nispeten bağımsızdır.
ThreadLocal, set metodunu çalıştırırken önce mevcut iş parçacığı (Thread t = Thread.currentThread()) alır ve mevcut iş parçacığı kullanarak ThreadLocalMap alır; harita boş değilse, mevcut iş parçacığında önceden bağlı bir harita vardır, sonra bu haritanın değerini günceller, eğer değilse, değeri haritaya koymak için anahtar olarak kendini kullanır, böylece değişkenler ve iş parçacıklarının bağlanmasını gerçekleştirir.
Kodu test edin, iş parçacığı havuzunu maksimum 5 iş parçacığı olarak ayarlayın ve çoklu iş parçacığı durumunda ThreadLocal get yöntemini çağırdığımızda ThreadLocal verisini (Diğer iş parçacıkları tarafından veri seti), bizThreadLocal küme yöntemi, mevcut iş parçacığında veri ayarlamak için çağrılmaz., aşağıdaki şekilde gösterildiği gibi:
Hata nedenleri:Bir iş parçacığı tekrar kullanıldıktan sonra, ThreadLocal'dan elde edilen ilk değerin diğer önceki iş parçacıklarından kalan bir değer olması muhtemeldir。
Çünkü, mevcut başlıkta ThreadLocal ile bitirdikten sonra,Zamanında temizleme için mutlaka kaldırma programını arayın。 Aşağıda gösterildiği gibi:
Kod:
(Son)
|