2014-05-24 2 views

Répondre

0

Un objet de fabrique de session est également implémenté en utilisant le motif de conception singleton.

Le motif de conception singleton peut être réalisé sous la forme thread safe.

et ils ont mis en œuvre singleton avec thread sûr pour la fabrique de session. Lorsque nous implémentons singleton, nous devons nous assurer que nous avons besoin de filetage sûr ou pas et nous devrions mettre en œuvre en conséquence.

voir la mise en œuvre de diverses singleton dans mon blog sous modèle de conception

java guide

2

Le singleton est ni thread-safe ne pas thread-safe en soi. Vous devez jeter un oeil à votre implémentation spécifique. La question majeure est, gère-t-elle l'état?

Si tel est le cas, vous vous assurez que pas plus d'un thread n'est autorisé à changer d'état en même temps. C'est le même problème que les variables globales souffrent en ce qui concerne la sécurité des threads. Mais il existe des mécanismes pour assurer cette sécurité, on s'appelle l'exclusion mutuelle. L'événement de deux threads modifiant simultanément la même variable est l'un des événements problématiques, il y a plus à savoir. Comme deux threads qui modifient séquentiellement une variable, la question est de savoir quelle réponse compte.

Des événements mutuellement exclusifs en général et une explication spécifique dans le contexte Java peuvent être trouvés respectivement here (Mutually exclusive events) et here (Oracle concurrency guide). Les variables globales sont expliquées here. Stateless et stateful sont également de bons termes à considérer en ce qui concerne concurrency, parallelism and thread-safety.

Retour à votre question: Une usine habituellement n'introduit aucun état et bien peut être librement partagée entre plusieurs threads. Les instances produites par l'usine sont très probablement à états et ne doivent être partagées entre thread qu'après les avoir rendues sécurisées.

Remarque importante: Mais ne vous méprenez pas ici. N'oubliez pas de toujours vérifier la mise en place de vos singletons! Dans Java, vous pouvez introduire des annotations pour documenter vos investigations et marquer des éléments de code spécifiques comme thread-safe. Il existe des paquets qui définissent déjà des annotations couramment utilisables pour documenter un tel comportement, jetez un oeil à l'apache org.apache.http.annotation. Lorsque vous utilisez une API, il est recommandé d'inspecter la documentation pour de tels conseils.

Questions connexes