Maison  >  Article  >  Java  >  Le code explique le modèle singleton de Java

Le code explique le modèle singleton de Java

angryTom
angryTomavant
2019-11-26 14:37:231905parcourir

Le code explique le modèle singleton de Java

Le modèle singleton peut être considéré comme l'un des modèles de conception les plus couramment utilisés. Sa fonction principale est de garantir qu'une classe n'a qu'une seule instance et de fournir un point d'accès global pour y accéder. il, avec un contrôle strict de la méthode d'accès de l'utilisateur.

Le mode singleton est divisé en mode paresseux et mode affamé. Tout d'abord, parlons du mode affamé :

Mode affamé

Mode affamé. un peu comme avoir faim, comme une personne qui a faim depuis longtemps, donc il mangera tant que quelqu'un lui donnera quelque chose, que la nourriture soit délicieuse ou qu'il puisse la manger. Le code est le suivant :

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton (){}

    public static Singleton getInstance() {
        return instance;
    }

}

Tout le monde sait ce que cela signifie. C'est une méthode d'initialisation statique. L'objet est instancié dès que la classe est chargée. L'avantage est la sécurité des threads, mais l'inconvénient est qu'elle est instanciée. occupe les ressources du système à l'avance. A ce moment, le mode paresseux apparaît :

(Vidéo recommandée : Tutoriel vidéo Java)

Mode paresseux

Par rapport au mode homme affamé, qui n'est pas sélectif en matière de nourriture, le mode homme paresseux signifie manger uniquement lorsque la nourriture est portée à votre bouche, sinon vous ne bougerez pas la bouche, peu importe votre faim. Le code est le suivant :

public class Singleton{

    private static Singleton instance;

    private Singleton(){}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

Cependant, lorsque plusieurs threads appellent la méthode getInstance() en même temps, il est possible de créer plusieurs instances, donc cette version du thread n'est pas sécurisée, donc la version suivante est créé :

public class Singleton {

    private static Singleton instance;

    private Singleton (){}

    public static Singleton getInstance() {
        if (instance == null) {  
            synchronized (Singleton .class) {  
            if (instance == null) {  
                instance = new Singleton ();  
                }  
            }  
        } 
        return instance;
    }
}

Utilisez la méthode de double verrouillage pour garantir que lorsque instance == null, plusieurs threads peuvent passer le premier niveau de jugement lors de l'appel de la méthode getInstance().

Dans des circonstances normales, le mode singleton de Hungry Han peut répondre à la plupart des besoins. C'est la situation de base du mode singleton.

Cet article provient du site Web php chinois, colonne tutoriel Java, bienvenue pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer