Accès simultané aux méthodes statiques
J'ai une méthode statique avec la signature suivante:
public static List<ResultObjects> processRequest(RequestObject req){
//process the request object and return the results.
}
Ce qui se passe quand il y a de multiples appels à la méthode ci-dessus en même temps? Va les demandes soient traitées en même temps ou l'un après l'autre?
source d'informationauteur user1226058
Vous devez vous connecter pour publier un commentaire.
De répondre exactement à votre question:
Vous devez ajouter le
synchronized
modificateur si vous travaillez avec des objets qui requièrent un accès simultané.Si vous avez besoin pour éviter une exécution simultanée, vous devez explicitement synchroniser. Le fait que la méthode est statique n'a rien à faire avec elle. Si vous déclarez la méthode elle-même à être
synchronized
ensuite, la synchronisation sur l'objet de classe. Sinon, vous devrez synchroniser sur certains objet statique (depuisthis
n'existe pas de méthodes statiques).Tous vos appels à la méthode sera exécutée simultanément... mais:
Vous pouvez avoir de problème de concurrence (et en non thread-safe situation) dès que le code de votre méthode statique de modifier les variables statiques. Et dans ce cas, vous pouvez déclarer votre méthode
synchronized
Si votre méthode utilisez uniquement des variables locales que vous n'aurez pas de problèmes de concurrence.
Vous pouvez vérifier par vous même:
tous les appels de méthode à partir de plusieurs threads en java sont simultanées par défaut.