Dans le livre Java Servlet Programming, il y a un exemple de servlet à la page 54 qui recherche les nombres premiers dans un fil d'arrière-plan. Chaque fois qu'un client accède au servlet, le nombre premier le plus récemment trouvé est renvoyé.Une variable accessible par plusieurs threads dans une servlet Java doit-elle être déclarée volatile?
La variable qui est utilisée pour stocker le plus récemment trouvé le premier est déclaré comme tel:
long lastprime = 0;
Comme cette variable est begin accessible à partir de plusieurs threads (le fil d'arrière-plan qui est de faire les calculs et les discussions des clients qui y accéder), n'a-t-il pas besoin d'être déclaré volatile ou avoir son accès synchronisé d'une manière ou d'une autre?
Je voterais pour AtomicLong –
Non, ce n'est pas un servlet SingleThreadModel. C'est un exemple d'utilisation d'une servlet pour effectuer un traitement en arrière-plan. – MCS
On dirait que c'est juste un mauvais exemple alors. Il arrive - les auteurs ne savent jamais ce dont ils parlent;) –