Middle
ThreadLocal dəyişəni nədir?
sobes.tech Süni İntellekt
AI-dan cavab
ThreadLocal — hər bir ip üçün spesifik məlumatları saxlamaq imkanı verən sinifdir. ThreadLocal istifadə edən hər bir ip öz kopiyasına malik olacaq və bu kopiyalar digər ip-lərdən izolyasiya olunacaq.
Əsas xüsusiyyətlər və tətbiqlər:
- Məlumatların izolyasiyası: Müxtəlif ip-lər arasında paylaşılan və dəyişkən məlumatlara çoxnüvəli giriş problemlərini qarşısını alır, çünki hər ip öz kopiyası ilə işləyir.
- İp üzrə vəziyyətin idarə olunması: Veb tətbiqlərdə və ya çox ipli xidmətlərdə hazırkı sorğu ilə əlaqəli məlumatları (məsələn, istifadəçi ID-si, tranzaksiya konteksti) saxlamaq üçün faydalıdır və bu məlumatları metodlar arasında açıq şəkildə ötürməyə ehtiyac yoxdur.
- İlkinləşdirmə:
ThreadLocalhər ip üçün ilk girişdəinitialValue()metodu vasitəsilə və yaset()ilə açıq şəkildə dəyər təyin edilərək başlanır. - Həyat dövrü:
ThreadLocal-də saxlanan məlumatlar ip-in həyat dövrü boyunca və yaremove()metodu ilə açıq şəkildə silinənə qədər mövcuddur.
İstifadə nümunəsi:
// Cari ip-in adını saxlamaq üçün ThreadLocal yaradırıq
private static final ThreadLocal<String> threadName = new ThreadLocal<String>() {
@Override
protected String initialValue() {
// İlk girişdə dəyəri başlat
return Thread.currentThread().getName();
}
};
public void processRequest() {
// Cari ip üçün dəyər təyin edirik
threadName.set("RequestProcessor-" + Thread.currentThread().getId());
// Cari ip üçün dəyəri alırıq
String currentThreadName = threadName.get();
System.out.println("İstək işlənir ip-də: " + currentThreadName);
// Yaddaş sızmalarını qarşısını almaq üçün dəyəri silirik, xüsusən ip hovuzlarında
threadName.remove();
}
İstifadədən sonra remove() çağırmaq vacibdir, xüsusən ip hovuzlarında, çünki ip yenidən istifadə oluna bilər və köhnə ThreadLocal dəyəri ona bağlı qala bilər.