Bonjour à tous,
Je suis un petit nouveau sur ce forum et je me permets de vous soumettre mes réflexions sur le singleton.
Imaginons un cas d'utilisation :
J'ai un "manager" qui me permet d'accéder à ma BDD pour effectuer des actions.
Afin de protéger ce fonctionnement en mode multi-Thread, je fais de ce manager un singleton.
J'ai donc un synchronized sur la méthode statique GetInstance() de ma classe.
Je fais appel à cette méthode depuis une autre classe de la manière suivante :
MonManager manager = MonManager.getInstance();
Ensuite, dans ce manager j'ai une même méthode ajouteSiPasAssez() qui :
1)lire une valeur en BDD
2)test si cette valeur est inférieure à X
3)si c'est le cas, elle ajoute 50
J'ai donc besoin que cette méthode ne soit accéder que par un seul Thread à la fois.
Dois-je mettre un synchronized dessus ou alors le fait d'utiliser un singleton suffit ?
Je fais
MonManager manager = MonManager.getInstance();
A quelle moment cet appel rend la main sur le moniteur ?
Dès que je sors de la méthode getInstance ?
Et si je fais ça :
MonManager.getInstance().ajouteSiPasAssez();
Il rend la main avant ou après avoir fini la méthode ajouteSiPasAssez() ?
Partager