Die Sitzung ist nicht threadsicher und weder die get-Methode noch die set-Methode sind garantiert threadsicher. Im Allgemeinen sollten Sie in einem Servlet-Container davon ausgehen, in einer Umgebung mit mehreren Threads zu sein, und keine bereitgestellten Tools sind sicher.
Dies gilt auch für die Objekte, die Sie in der Sitzung speichern. Die Sitzung selbst wird das gespeicherte Objekt nicht manipulieren, aber Sie können das Objekt in einem anderen Thread abrufen und versuchen, es zu manipulieren. Es liegt an Ihnen, Ihren eigenen Code zu prüfen, um zu sehen, ob Rennbedingungen möglich sind.
Das Codebeispiel, das Sie gepostet haben, ist gültig, aber das Problem kann außerhalb des begrenzten Bereichs Ihres Beispiels bestehen. Es stellt sicher, dass beim Festlegen der Sitzung keine Bedingungen vorhanden sind, aber nichts verhindert, dass ein anderer Thread die Gruppe überschreibt. Wenn der Code in Ihrer Anfrage davon abhängt, dass der Wert unverändert bleibt, könnten Sie immer noch Probleme haben.
Muss Links lesen! ++ – cherouvim
Warum möchten Sie sie synchronisieren? Es gibt eine Sitzung pro Client und Clients sind Single-Threading nicht? – OscarRyz
@Oscar Reyes: Ein Client kann viele gleichzeitige Anfragen ausgeben. zB CTRL + CLICKing (auf Firefox) wie verrückt auf dem Stackoverflow-Logo. – cherouvim