Rozumiem, że klasy działań Struts2 są wątkowo bezpieczne, ponieważ akcje są umieszczane w stosie wartości. Stos wartości jest z kolei częścią kontekstu działania. Ponieważ kontekst działania jest wątkiem lokalnym, wartości przechowywane w kontekście działania (w tym stos wartości) są unikalne dla każdego wątku. A więc Akcje są wątkowo bezpieczne.Czy interceptory są w Struts2 Thread Unsafe?
Uważaj jednak na przechwytywacze: są naprawdę użyteczne, wykonują wszystkie te żmudne zadania dla programisty ... jak sprawdzanie poprawności, pobieranie wartości paramicznych itp. Ale należy wziąć pod uwagę, że: Interceptory mogą być dzielone między wiele próśb. Czy to powoduje, że przechwytywanie wątków jest niebezpieczne?
Z tym pytaniem próbowałem surfować po sieci w poszukiwaniu dobrych artykułów związanych z tym problemem. I znalazłem bardzo dobry artykuł, o którym wyraźnie wspomniałem w przykładzie Jak interceptory NIE są bezpieczne dla wątków.
strona internetowa jest: http://www.bullraider.com/java/struts2/tutorials/interceptors-and-thread-safety
Co muszę wiedzieć z tego artykułu jest głównym powodem przechwytujących będących wątek un-bezpieczne jest to, że kolektory są tworzone tylko raz. tj. każdy przechwytujący ma tylko jeden obiekt. Tak więc pola instancji nie są bezpieczne, gdy to samo wystąpienie obiektu przechwytującego jest współużytkowane przez wątki.
Na końcu artykułu wspomniano, że są przypadki, w których nawet przechwytujące są bezpieczne dla wątków. Ale nie wspomnieli o takich przypadkach. Przeszukałem sieć, aby znaleźć odpowiedź ... ale na próżno :(
Czy ktoś może mi powiedzieć lub podać mi link, gdzie mogę dowiedzieć się, jak sprawić, aby przechwytujące były wątkowane (lub jakie są scenariusze gdy Interceptor jest bezpieczne dla wątków)
+1 do dzielenia się tak wiele nieznanych rzeczy :) – tusar
Dzięki. odpowiedź bardzo pouczająca. 2 pytania dla u: (1) Podkreśliliście bardzo dobrze, że umieszczanie metod przechwytywania w zsynchronizowanym bloku jest bardzo nieefektywne. Dlaczego tworzenie instancji akcji dla każdego wątku nie ma wpływu na wydajność? (2) Czy NIGDY nie zaleca się używania domyślnego stosu przechwytującego i zawsze stosu niestandardowego przechwytywacza (w którym wszystkie nieużywane przechwytywacze, które używają zmiennych instancji są usuwane), aby był bezpieczny dla wątków? –
@BimanTripathy Dodałem moje zdanie na temat dwóch pytań do odpowiedzi. Proszę spojrzeć :) –