Est-ce les variables globales d'une servelt peuvent etre manipuler en même temps par plusieurs utilisateurs qui exécute la servelt en même temps. Je explicite, soit une variable déclarée en global, dans une servlet, 'res' qui va contenir le résultat d'une requête MySQL d'un utilisateur. Soit un utilisateur X qui va exécute cette servelet à un temps T0, donc la variable 'res' va contenir les données de X. Soit Y un autre utilisateur qui va exécute cette servlet lui aussi au temps T0, donc 'res' va maitenant contenir les données de Y. Lorsque X va vouloir afficher les informations contenu dans 'res' que va-t-il voir .? Les informations qui lui sont propres ou celles de Y .? Chaque utilisateur a-t-il sa variable 'res' qui lui ai propre .?
La question ne se pose pas comme cela.
Si une même variable est accessible de plusieurs threads, alors elle ne sera pas "dupliquée" à la création des threads, mais partagée (principe des threads multiples plutôt que des processus multiples). En l'occurrence, chaque requête http arrivant dans une servlet java est traitée par un nouveau thread, et on est donc dans cette situation. Par contre évidemment, il faut assurer la cohérence des données (deux threads ne doivent pas tenter d'opérations incohérentes au même moment sur la même variable), et java résout ce problème par la synchronisation sur un mutex (java définit un mutex par instance et par classe). Pour en savoir plus, documente toi sur le mot clé « synchronized » et son utilisation dans les servlets java.
# meuh
Posté par gc . En réponse au message Variable en java servlet. Évalué à 1.
C'est pas une nouvelle technologie.
Est-ce les variables globales d'une servelt peuvent etre manipuler en même temps par plusieurs utilisateurs qui exécute la servelt en même temps. Je explicite, soit une variable déclarée en global, dans une servlet, 'res' qui va contenir le résultat d'une requête MySQL d'un utilisateur. Soit un utilisateur X qui va exécute cette servelet à un temps T0, donc la variable 'res' va contenir les données de X. Soit Y un autre utilisateur qui va exécute cette servlet lui aussi au temps T0, donc 'res' va maitenant contenir les données de Y. Lorsque X va vouloir afficher les informations contenu dans 'res' que va-t-il voir .? Les informations qui lui sont propres ou celles de Y .? Chaque utilisateur a-t-il sa variable 'res' qui lui ai propre .?
La question ne se pose pas comme cela.
Si une même variable est accessible de plusieurs threads, alors elle ne sera pas "dupliquée" à la création des threads, mais partagée (principe des threads multiples plutôt que des processus multiples). En l'occurrence, chaque requête http arrivant dans une servlet java est traitée par un nouveau thread, et on est donc dans cette situation. Par contre évidemment, il faut assurer la cohérence des données (deux threads ne doivent pas tenter d'opérations incohérentes au même moment sur la même variable), et java résout ce problème par la synchronisation sur un mutex (java définit un mutex par instance et par classe). Pour en savoir plus, documente toi sur le mot clé « synchronized » et son utilisation dans les servlets java.