In dem Buch Java Servlet Programming gibt es ein Beispiel-Servlet auf Seite 54, das nach Primzahlen in einem Hintergrundthread sucht. Jedes Mal, wenn ein Client auf das Servlet zugreift, wird die zuletzt gefundene Primzahl zurückgegeben.Muss eine Variable, auf die mehrere Threads in einem Java-Servlet zugreifen, als flüchtig deklariert werden?
Die Variablen, die die zuletzt prime als solche erklärt wird festgestellt, zu speichern, verwendet wird:
long lastprime = 0;
Da diese Variablen von mehreren Threads (dem Hintergrund-Thread zugegriffen werden beginnen, der die Berechnungen und jedes Client-Threads ist zu tun, dass greifen darauf zu), muss es nicht als flüchtig deklariert werden oder muss sein Zugang irgendwie synchronisiert sein?
Ich würde für AtomicLong wählen –
Nein, es ist kein SingleThreadModel-Servlet. Es ist ein Beispiel für die Verwendung eines Servlets zur Hintergrundverarbeitung. – MCS
Hört sich an, als wäre es nur ein schlechtes Beispiel. Es passiert - die Autoren wissen nie, worüber sie sprechen;) –