Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 27855|Răspunde: 1

[Sursă] Principiile Java ThreadLocal și reutilizarea multi-threaded duc la aglomerarea datelor

[Copiază linkul]
Postat pe 01.11.2021 11:45:36 | | | |
În programare, definim parametrii metodei pentru a transmite conținutul variabilelor; dacă nivelul metodei de execuție este profund, atunci fiecare metodă trebuie să definească parametrii ce trebuie transmise; în acest moment, unele variabile pot fi trecute prin ThreadLocal, atâta timp cât toate metodele sunt executate pe același fir, valoarea ThreadLocal poate fi setată și citită.

Clasa ThreadLocal este folosită pentru a furniza variabile locale în interiorul firului. Când aceste variabile sunt accesate (get/set) într-un mediu multi-threaded, variabilele din fiecare fir sunt relativ independente de variabilele din celelalte fire.

ThreadLocal va obține mai întâi firul curent (Thread t = Thread.threadCurrentThread()) când execută metoda set și va folosi firul curent pentru a obține un ThreadLocalMap; dacă harta nu este goală, înseamnă că firul curent are o hartă legată anterior, apoi actualizează valoarea acestei hărți, dacă nu, se folosește ca cheie pentru a pune valoarea în hartă, astfel încât să se realizeze legarea variabilelor și firelor.



Testăm codul, setăm pool-ul de fire să mențină un maxim de 5 fire de execuție, iar când apelăm metoda get ThreadLocal în cazul multi-threading-ului, vom obține datele ThreadLocal (Set de date realizat de alte fire de execuție), noiMetoda setului ThreadLocal nu este apelată pe firul curent pentru a seta datele, așa cum se arată în figura de mai jos:



Cauzele erorii:Odată ce un fir este reutilizat, este probabil ca prima valoare obținută din ThreadLocal să fie o valoare rămasă din alte fire anterioare

Pentru că, după ce terminăm cu ThreadLocal pe firul curent,Asigură-te că suni la îndepărtare pentru curățare la timp。 Așa cum se arată mai jos:



Cod:

(Sfârșit)





Precedent:Docker analizează setările de repornire a containerelor și containerele de oprire în vrac
Următor:Jenkins (5) Prezentarea grupului de proiect
Postat pe 02.11.2021 21:30:12 |
Vino să înveți din nou.
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com