Ohjelmoinnissa määrittelemme metodin parametrit muuttujan sisällön välittämiseksi, jos suoritusmenetelmän taso on syvä, jokaisen metodin täytyy määritellä välitettävät parametrit. Tässä vaiheessa joitakin muuttujia voidaan välittää ThreadLocalin kautta, kunhan kaikki metodit suoritetaan samassa säikeessä, ThreadLocalin arvo voidaan asettaa ja lukea.
ThreadLocal-luokkaa käytetään paikallisten muuttujien tarjoamiseen säikeen sisällä. Kun näitä muuttujia käytetään (get/set) monisäikeisessä ympäristössä, kunkin säikeen muuttujat ovat suhteellisen riippumattomia muiden säikeiden muuttujista.
ThreadLocal saa ensin nykyisen säikeen (Thread t = Thread.currentThread()) suorittaessaan asetettua metodia, ja käyttää nykyistä säikettä saadakseen ThreadLocalMapin; jos kartta ei ole tyhjä, se tarkoittaa, että nykyisellä säikeellä on aiemmin sidottu kartta, ja päivittää tämän kartan arvon, jos ei, käyttää itseään avaimena arvon asettamiseen karttaan, jotta muuttujien ja säikeiden sitominen toteutuu.
Testaa koodia, aseta säiepooli ylläpitämään enintään 5 säikettä, ja kun kutsumme ThreadLocal-get-metodia monisäikeisyyden tapauksessa, saamme ThreadLocal-datan (Muiden säikeiden aineisto), usThreadLocal-joukko-menetelmää ei kutsuta nykyisessä säikeessä datan asettamiseksi, kuten alla olevassa kuvassa näkyy:
Virhe aiheuttaa:Kun säie on käytetty uudelleen, on todennäköistä, että ensimmäinen ThreadLocalista saatu arvo on jäljellä muista aiemmista säikeistä。
Koska, kun olemme saaneet ThreadLocalin valmiiksi nykyisessä ketjussa,Muista soittaa poistopalvelulle saadaksesi ajoissa puhdistuksen。 Kuten alla on esitetty:
Koodi:
(Loppu)
|