Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 27855|Válasz: 1

[Forrás] Java szálHelyi elvek és a többszálas újrahasználat adatösszezavarodáshoz vezet

[Linket másol]
Közzétéve 2021. 11. 01. 11:45:36 | | | |
A programozásban a metódusparamétereket definiáljuk a változó tartalom továbbításához; ha a végrehajtási módszer szintje mély, akkor minden módszernek meg kell határoznia az átmenendő paramétereket, ekkor néhány változó átadható a ThreadLocal-on, amennyiben minden metódus ugyanazon a szálon van végrehajtva, a ThreadLocal értéke beállítható, és olvasható.

A ThreadLocal osztályt használják a szálon belüli helyi változók biztosítására. Amikor ezeket a változókat többszálas környezetben érjük el (get/set), az egyes szálak változói viszonylag függetlenek a többi szálban lévő változótól.

A ThreadLocal először megkapja a jelenlegi szálat (Thread t = Thread.currentThread()) a set metódus végrehajtásakor, és a jelenlegi szálat használja a ThreadLocalMap-hez, ha a leképezés nem üres, az azt jelenti, hogy a jelenlegi szálnak van egy korábban kötött leképezése, majd frissíti ennek a leképezésnek az értékét, ha nem, akkor önmagát használja kulcsként, hogy a változók és szálak kötését elérje.



Teszteljük a kódot, állítsuk be a szálpoolt maximum 5 szál fenntartására, és amikor hívjuk a ThreadLocal get metódust többszálos megoldás esetén, megkapjuk a ThreadLocal adatot (Adathalmaz, amelyet más szálak használnak),A ThreadLocal halmaz-metódus nem hívja meg az aktuális szálon az adatok beállításához, ahogy az alábbi ábrán látható:



A hiba okai a következők:Ha egy szálat újra felhasználunk, valószínű, hogy az első ThreadLocal-ból származó érték más korábbi szálakból maradt

Mert miután befejeztük a ThreadLocal használatát a jelenlegi szálon,Mindenképp hívd fel a Removal-t az időben történő tisztításért。 Ahogy az alábbiakban látható:



Kód:

(Vége)





Előző:Docker a konténer újraindítási beállításait és a nagy mennyiségi megállító konténereket nézi
Következő:Jenkins (5) Projektcsoportos előadás
Közzétéve 2021. 11. 02. 21:30:12 |
Gyere újra tanulni.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com