В програмирането дефинираме параметри на метода за предаване на променливо съдържание; ако нивото на изпълнителния метод е дълбоко, всеки метод трябва да дефинира параметрите, които трябва да се предават, в този момент някои променливи могат да се предават през ThreadLocal, стига всички методи да се изпълняват върху една и съща нишка, стойността на ThreadLocal може да бъде зададена и прочетена.
Класът ThreadLocal се използва за предоставяне на локални променливи вътре в нишката. Когато тези променливи се достъпват (get/set) в многопоточна среда, променливите във всяка нишка са относително независими от променливите в други нишки.
ThreadLocal първо ще получи текущата нишка (Thread t = Thread.currentThread()) при изпълнение на метода set и ще използва текущата нишка, за да получи ThreadLocalMap; ако картата не е празна, това означава, че текущата нишка има предварително свързана карта, след което актуализира стойността на тази карта, ако не, използва себе си като ключ за поставяне на стойността в картата, за да се реализира свързването на променливи и нишки.
Тестваме кода, задаваме пула на нишките да поддържа максимум 5 нишки, и когато извикаме метода ThreadLocal get в случая на многонишковост, ще получим ThreadLocal данните (Данни, събрани от други нишки), usМетодът ThreadLocal set не се извиква на текущата нишка за задаване на данните, както е показано на фигурата по-долу:
Причините за грешки:След като нишка се използва повторно, вероятно първата стойност, получена от ThreadLocal, е стойност, останала от други предишни нишки。
Защото, след като приключим с ThreadLocal в текущата нишка,Не забравяйте да се обадите на отдел "Премахване" за навременно пречистване。 Както е показано по-долу:
Код:
(Край)
|