Programuodami apibrėžiame kintamojo turinio perdavimo metodo parametrus, jei vykdymo metodo lygis yra gilus, tada kiekvienas metodas turi apibrėžti perduodamus parametrus, šiuo metu kai kuriuos kintamuosius galima perduoti per ThreadLocal, kol visi metodai vykdomi toje pačioje gijoje, galima nustatyti ir perskaityti ThreadLocal reikšmę.
ThreadLocal klasė naudojama vietiniams kintamiesiems gijos viduje pateikti. Kai šie kintamieji pasiekiami (get/set) kelių gijų aplinkoje, kiekvienos gijos kintamieji yra santykinai nepriklausomi nuo kitų gijų kintamųjų.
ThreadLocal pirmiausia gaus dabartinę giją (Thread t = Thread.currentThread()) vykdydamas nustatytą metodą, ir naudos dabartinę giją, kad gautumėte ThreadLocalMap, jei žemėlapis nėra tuščias, tai reiškia, kad dabartinė gija turi anksčiau susietą žemėlapį, tada atnaujinkite šio žemėlapio vertę, jei ne, naudokite save kaip raktą, kad įdėtumėte vertę į žemėlapį, kad suprastumėte kintamųjų ir gijų susiejimą.
Išbandykite kodą, nustatykite gijų telkinį, kad išlaikytų ne daugiau kaip 5 gijas, o kai iškviesime "ThreadLocal" metodą kelių gijų atveju, gausime "ThreadLocal" duomenis (Kitų gijų duomenų rinkinys), musThreadLocal rinkinio metodas neiškviečiamas dabartinėje gijoje, kad būtų nustatyti duomenys, kaip parodyta toliau pateiktame paveikslėlyje:
Klaidos priežastys:Kai gija pakartotinai naudojama, tikėtina, kad pirmoji reikšmė, gauta iš ThreadLocal, yra reikšmė, likusi iš kitų ankstesnių gijų。
Nes po to, kai baigsime su ThreadLocal dabartinėje gijoje,Būtinai paskambinkite pašalinti, kad laiku išvalytumėte。 Kaip parodyta žemiau:
Kodas:
(Pabaiga)
|