Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 27855|Odgovoriti: 1

[Vir] Java ThreadLocalna načela in večnitna ponovna uporaba vodijo do podatkovnega nereda

[Kopiraj povezavo]
Objavljeno na 1. 11. 2021 11:45:36 | | | |
V programiranju definiramo parametre metode za prenos vsebine spremenljivk; če je raven metode izvajanja globoka, mora vsaka metoda definirati parametre, ki jih je treba prenesti; v tem trenutku je mogoče nekatere spremenljivke prenesti skozi ThreadLocal, dokler so vse metode izvedene na isti niti, je mogoče nastaviti in prebrati vrednost ThreadLocal.

Razred ThreadLocal se uporablja za zagotavljanje lokalnih spremenljivk znotraj niti. Ko se do teh spremenljivk dostopa (get/set) v večnitnem okolju, so spremenljivke v vsaki niti razmeroma neodvisne od spremenljivk v drugih niteh.

ThreadLocal najprej dobi trenutno nit (Thread t = Thread.currentThread()) ob izvajanju metode množice, nato pa uporabi trenutno nit za pridobitev ThreadLocalMap; če mapa ni prazna, to pomeni, da ima trenutna nit že prej vezano preslikavo, nato posodobi vrednost te preslikave, če ne, uporabi sebe kot ključ za vnos vrednosti v preslikavo, da uresniči vezavo spremenljivk in niti.



Testirajte kodo, nastavite nabor niti, da vzdržuje največ 5 niti, in ko pokličemo metodo ThreadLocal get v primeru večnitnosti, dobimo podatke ThreadLocal (Podatkovni nabor drugih niti), usMetoda ThreadLocal set ni klicana v trenutni niti za nastavitev podatkov, kot je prikazano na spodnji sliki:



Napaka povzroča:Ko je nit ponovno uporabljena, je verjetno, da je prva vrednost, pridobljena iz ThreadLocal, vrednost, ki je ostala iz drugih prejšnjih niti

Ker, ko končamo z ThreadLocal na trenutni niti,Ne pozabite poklicati odstranitve za pravočasno čiščenje。 Kot je prikazano spodaj:



Koda:

(Konec)





Prejšnji:Docker pregleduje nastavitve ponovnega zagona kontejnerjev in kontejnerje za množično ustavitev
Naslednji:Jenkins (5) Predstavitev projektne skupine
Objavljeno na 2. 11. 2021 21:30:12 |
Pridi se spet učiti.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com