Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 27855|Odpowiedź: 1

[Źródło] Java ThreadLocal, zasady i wielowątkowe ponowne użycie prowadzą do zamieszania danych

[Skopiuj link]
Opublikowano 01.11.2021 11:45:36 | | | |
W programowaniu definiujemy parametry metody, aby przekazać zawartość zmiennych; jeśli poziom metody wykonania jest głęboki, każda metoda musi zdefiniować parametry do przekazania; w tym momencie niektóre zmienne mogą być przekazywane przez ThreadLocal, o ile wszystkie metody są wykonywane na tym samym wątku, można ustawić i odczytać wartość ThreadLocal.

Klasa ThreadLocal służy do dostarczania zmiennych lokalnych wewnątrz wątku. Gdy do tych zmiennych uzyskujemy dostęp (get/set) w środowisku wielowątkowym, zmienne w każdym wątku są stosunkowo niezależne od zmiennych w innych wątkach.

ThreadLocal najpierw uzyska aktualny wątek (Thread t = Thread.currentThread()) podczas wykonywania metody set, a następnie użyje bieżącego wątku do uzyskania ThreadLocalMap; jeśli mapa nie jest pusta, oznacza to, że bieżący wątek ma wcześniej bound map, a następnie aktualizuje wartość tej mapy, jeśli nie, używa siebie jako klucza do umieszczenia wartości w mapie, aby zrealizować powiązania zmiennych i wątków.



Przetestuj kod, ustaw pulę wątków tak, aby utrzymywała maksymalnie 5 wątków, a gdy wywołamy metodę get ThreadLocal w przypadku wielowątkowania, otrzymamy dane ThreadLocal (Zestaw danych innych wątków), usMetoda zestawu ThreadLocal nie jest wywoływana w bieżącym wątku do ustawienia danych, jak pokazano na poniższym rysunku:



Błąd powoduje:Po ponownym użyciu wątku prawdopodobnie pierwsza wartość uzyskana z ThreadLocal to pozostałość pozostała z poprzednich wątków

Ponieważ po zakończeniu z ThreadLocal na bieżącym wątku,Koniecznie zadzwoń do usunięcia w celu szybkiego usunięcia。 Jak pokazano poniżej:



Kod:

(Koniec)





Poprzedni:Docker analizuje ustawienia restartu kontenerów i kontenery bulk stop
Następny:Prezentacja grupy projektowej Jenkins (5)
Opublikowano 02.11.2021 21:30:12 |
Przyjdź się uczyć na nowo.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com