Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 27855|Отговор: 1

[Източник] Java ThreadЛокалните принципи и многонишковото повторно използване водят до претрупване на данни

[Копирай линк]
Публикувано в 1.11.2021 г. 11:45:36 ч. | | | |
В програмирането дефинираме параметри на метода за предаване на променливо съдържание; ако нивото на изпълнителния метод е дълбоко, всеки метод трябва да дефинира параметрите, които трябва да се предават, в този момент някои променливи могат да се предават през ThreadLocal, стига всички методи да се изпълняват върху една и съща нишка, стойността на ThreadLocal може да бъде зададена и прочетена.

Класът ThreadLocal се използва за предоставяне на локални променливи вътре в нишката. Когато тези променливи се достъпват (get/set) в многопоточна среда, променливите във всяка нишка са относително независими от променливите в други нишки.

ThreadLocal първо ще получи текущата нишка (Thread t = Thread.currentThread()) при изпълнение на метода set и ще използва текущата нишка, за да получи ThreadLocalMap; ако картата не е празна, това означава, че текущата нишка има предварително свързана карта, след което актуализира стойността на тази карта, ако не, използва себе си като ключ за поставяне на стойността в картата, за да се реализира свързването на променливи и нишки.



Тестваме кода, задаваме пула на нишките да поддържа максимум 5 нишки, и когато извикаме метода ThreadLocal get в случая на многонишковост, ще получим ThreadLocal данните (Данни, събрани от други нишки), usМетодът ThreadLocal set не се извиква на текущата нишка за задаване на данните, както е показано на фигурата по-долу:



Причините за грешки:След като нишка се използва повторно, вероятно първата стойност, получена от ThreadLocal, е стойност, останала от други предишни нишки

Защото, след като приключим с ThreadLocal в текущата нишка,Не забравяйте да се обадите на отдел "Премахване" за навременно пречистване。 Както е показано по-долу:



Код:

(Край)





Предишен:Docker разглежда настройките за рестартиране на контейнери и контейнери за масово спиране
Следващ:Дженкинс (5) Презентация на проектна група
Публикувано в 2.11.2021 г. 21:30:12 ч. |
Ела да научиш отново.
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com