Programmeerimises määratleme meetodi parameetrid muutujate sisu edastamiseks, kui täitmismeetodi tase on sügav, peab iga meetod määrama läbitavad parameetrid; sel ajal saab mõningaid muutujaid ThreadLocali kaudu edasi anda, kui kõik meetodid täidetakse samal lõimel, saab määrata ja lugeda ThreadLocali väärtust.
ThreadLocal klassi kasutatakse lokaalsete muutujate pakkumiseks lõime sees. Kui neid muutujaid kasutatakse (get/set) mitmelõimelises keskkonnas, on iga lõime muutujad suhteliselt sõltumatud teiste lõimede muutujatest.
ThreadLocal saab esmalt praeguse lõime (Thread t = Thread.currentThread()) seaditud meetodi täitmisel ja kasutab praegust lõime, et saada ThreadLocalMap; kui kaart ei ole tühi, tähendab see, et praegusel lõimel on varem seotud kaart, seejärel uuendab selle kaardi väärtust, kui mitte, kasutab end võtmena, et panna väärtus kaardile, et saavutada muutujate ja lõimede sidumine.
Testi koodi, sea lõimebassein maksimaalselt 5 lõime, ja kui kutsume ThreadLocal get meetodit mitme lõime puhul, saame ThreadLocal andmed (Andmekogum teiste lõimede poolt), usThreadLocal komplekti meetodit ei kutsuta praeguses lõimes andmete seadistamiseks, nagu alloleval joonisel näidatud:
Viga põhjustab:Kui lõime uuesti kasutatakse, on tõenäoline, et esimene ThreadLocalist saadud väärtus on ülejäänud väärtus teistest varasematest lõimedest。
Sest pärast seda, kui oleme ThreadLocaliga praeguses teemas lõpetanud,Kindlasti helista eemaldamisele õigeaegseks puhastuseks。 Nagu allpool näidatud:
Kood:
(Lõpp)
|