IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

synchronized d'un objet retourné par une fonction


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut synchronized d'un objet retourné par une fonction
    Bonjour,

    Je voulais savoir s'il y aurait un problème particulier à synchroniser sur un objet retourné par une fonction.

    Un peu de contexte pour ce besoin. J'utilise le "Initialization-on-demand holder idiom"

    L'instance que je veux initialiser à la demande m'est donc renvoyée par quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            public static Something getInstance() {
                    return LazyHolder.INSTANCE;
            }
    Et plus tard pour quelque chose d'autre que l'initialisation, j'ai besoin de synchroniser l'instance.

    D'où ma volonté de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    synchronized(getInstance()) {
    ...
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 562
    Points : 21 625
    Points
    21 625
    Par défaut
    Disons que c'est pas très robuste en cela que le jour où ce ne sera plus un singleton, cette syntaxe synchronisera sur des objets complètements différents et donc, ne synchronisera pas.

    En regardant le code, on ne "voit" pas que la synchronisation a lieu sur un objet précis, ce qui est moins maintenable. Il vaudrait mieux récupérer une instance, la garder dans un coin, se la partager autant que possible, et synchroniser là-dessus.

    Mais techniquement, ça marche aussi bien que sur un objet obtenu autrement qu'avec un appel de fonction.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/09/2012, 14h10
  2. Réponses: 2
    Dernier message: 24/12/2007, 09h53
  3. Réponses: 4
    Dernier message: 07/04/2007, 20h02
  4. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 19/01/2007, 23h17
  5. Réponses: 11
    Dernier message: 31/10/2005, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo