Je me permet juste de répondre sur la différence entre ton code par rapport au tutoriel.
Comme dit dans le tutoriel et ce sujet, le ThreadLocal gere une variable par thread.
Dans ton code tu as donc un "Singleton" par thread puisque c'est lui que tu mets dans le ThreadLocal.
Dans le tutoriel, on met dans le ThreadLocal un booléen. Il y a instance (le Singleton) et initHolder (le ThreadLocal contenant le booleen). Ce booléen est un indicateur pour savoir si le thread courant est déjà passé dans l'initialisation et donc ne pas faire la synchronisation et le test si instance est null.
C'est donc "interessant" si ton thread demande plusieurs fois le Singleton. Dans le cas de plusieurs threads de courte durée ne demandant qu'une fois le Singleton, ce n'est pas interessant. J'ai mis intéressant entre guillemet car le cout du ThreadLocal n'est pas forcément plus interessant que celui de la synchronisation du Singleton...
Partager