Działanie servletów

0

Siemka. Od jakiegoś czasu dręczy mnie jedno pytanie, a mianowicie z czego wynika to, że pisząc w Springu ( nie webflux ) czy tam innym frameworku bazującym na servletach nie musimy przejmować się wielowątkowością ( zakładając, że kod wykonuje się tylko synchronicznie ). Wysyłając wiele zapytań na raz zostanie wykorzystane kilka wątków. Każdy otrzymuje osobą instancję servletu czy pracuje na tej samej ?

1

nie musimy przejmować się wielowątkowością ( zakładając, że kod wykonuje się tylko synchronicznie )

Oczywiście że musimy - właśnie dlatego, że instancje servletów są dzielone przez wiele wątków

0

Czyli jeśli dobrze rozumiem to gdyby dodać pole ( np int ) w jednej z warstw, które mogłoby być modyfikowane przez wiele wątków(wiele zapytań w jednym momencie) to operacja ta powinna znajdować się w bloku synchronized i być volatile ?

0
DamianSn napisał(a):

Czyli jeśli dobrze rozumiem to gdyby np. dodać pole w jednej z warstw, które mogłoby być modyfikowane przez wiele wątków(wiele zapytań w jednym momencie) to operacja ta powinna znajdować się w bloku synchronized i być valotile ?

Generalnie tak, taki globalny stan powinien być synchronizowany jeśli operacje na nim wykonuje wiele wątków i nie jest to specyficzne tylko dla servletów.

Edit: Lepiej może powiedzieć "zabezpieczony" niż synchronizowany, bo tak jak napisał poniżej @scibi92 możemy do tego celu użyć różnych narzędzi z java.util.concurrent zamiast prymitywów typu synchronized czy volatile.

1

@DamianSn, nie to znaczy że musisz zapewnić żeby była bezpiecznosc. ConcurrentMap nie wymaga ani synchronized ani volatile, tylko final by się przydało...

1

Jeden z pierwszych przykładów z książki "Java Concurrency in Practice":

screenshot-20190608144616.png

0

Dzięki. Miałem trochę rozkminę bo w sumie dane zawsze pochodziły z bazy, pól nie modyfikowałem, które byłyby wspólne dla wielu wątków ( co jest w sumie nawet chyba wymagane przez zasadę stateless w restach ). A widziałem wielokrotnie repozytoria z serwisami gdzie trzymano dane w kolekcjach nieprzeznaczonych do obsługi przez wiele wątków i trochę się zgłupiałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1