国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Java Javacommencer Introduction détaillée au modèle singleton

Introduction détaillée au modèle singleton

Aug 10, 2020 pm 04:29 PM
Mode singleton

Introduction détaillée au modèle singleton

Tout d'abord, jetons un coup d'?il à la définition du modèle singleton?:

Le modèle singleton est l'un des modèles de conception les plus simples en Java et est un modèle de création qui fournit la meilleure fa?on de créer des objets. Le modèle singleton implique une seule classe chargée de créer ses propres objets tout en garantissant qu'un seul objet est créé.

(Tutoriel recommandé?: Tutoriel d'introduction à Java)

Afin de vous assurer qu'il n'y a qu'un seul objet en mémoire, évitez la création fréquente d'objets qui entra?nent une consommation de mémoire, afin que tout cet objet singleton soit utilisé partout où cet objet doit être appelé.

Examinons ensuite les types de modèles singleton?:

1. Style paresseux

Le style paresseux signifie que le singleton ne sera créé que lorsqu'il est nécessaire.

Implémentation paresseuse du modèle singleton?:

public class Singleton {
	private static Singleton singleton;
	private Singleton(){
	
	}
	public static Singleton getInstance(){
		if (singleton == null) {
			singleton = new Singleton();
	    }
	    return singleton;
}

Il y a un problème avec l'implémentation paresseuse du singleton, c'est-à-dire comment s'assurer qu'un seul objet est créé?? Si deux threads ou plus déterminent que le singleton est vide en même temps, plusieurs objets seront créés. Nous devons donc résoudre le problème de sécurité des threads.

En matière de sécurité des threads, ce qui me vient à l'esprit est le verrouillage. Le verrouillage n'est rien de plus que le verrouillage d'une méthode ou d'un objet de classe.

//在方法上加鎖
public class Singleton {
	private static Singleton singleton;
	private Singleton(){}
	public static synchronized Singleton getInstance() {
    	if (singleton == null) {
        	singleton = new Singleton();
    	}
    return singleton;
	}
}

//在類對象上加鎖
public class Singleton {
	private static Singleton singleton;
	private Singleton(){}
	public static Singleton getInstance() {
    synchronized(Singleton.class) {   
        if (singleton == null) {
            singleton = new Singleton();
        }
    }
    return singleton;
	}	
}

Ces deux méthodes peuvent résoudre le problème de la création multi-thread d'objets singleton en même temps, mais chaque fois que vous obtenez l'objet, vous devez d'abord acquérir le verrou et les performances de concurrence sont médiocres. Par conséquent, une optimisation est toujours nécessaire. L'objectif de l'optimisation est le suivant?: s'il n'y a pas d'objet instancié, verrouillez-le et créez-le. S'il y a un objet instancié, revenez-le directement.

(Recommandation vidéo d'apprentissage?: cours java )

Pour le verrouillage sur les méthodes, le verrouillage est requis, qu'il existe ou non un objet instancié. Par conséquent, ce que nous devons optimiser, c'est verrouiller l'objet de classe.

//DCL單例模式(Double Check + Lock)
public class Singleton {
	//volatite關(guān)鍵詞防止指令重排序,下文介紹
	private static volatile Singleton singleton;
	private Singleton(){}
	public static Singleton getInstance() {
	//如果singleton不為空,則直接返回對象,若多個線程發(fā)現(xiàn)singleton為空,則進入分支
		if (singleton == null) {
		//多個線程同時爭搶一個鎖,只有一個線程能成功,其他線程需等待
			synchronized(Singleton.class) {
			//爭搶到鎖的線程需再次判斷singleton是否為空,因為有可能被上個線程實例化了
			//若不為空則實例化,后續(xù)線程再進入的時候則直接返回該對象
			//對于之后所有進入該方法的線程則無需獲取鎖,直接返回對象   
        	if (singleton == null) {
           		singleton = new Singleton();
        	}
    		}
		}
    	return singleton;
	}	
}

Le mot-clé volatile est ajouté au code ci-dessus pour empêcher la réorganisation des instructions.

2. Style chinois affamé

Le style chinois affamé signifie que l'objet singleton est créé lorsque la classe est chargée.

Implémentation du modèle singleton de style chinois affamé?:

public class Singleton {
	private static final Singleton singleton = new Singleton();
	private Singleton(){
	
	}
	public static Singleton getInstance(){
		return singleton;
	}

Résumé?:

Style Lazy Man?: instancier des objets uniquement en cas de besoin En développement, si les besoins en mémoire sont élevés, c'est-à-dire. En utilisant le style paresseux, dans un environnement multithread, vous devez utiliser le mode singleton DCL. L'utilisation du mode singleton DCL résout les problèmes de sécurité de concurrence et de faibles performances. Si vous ajoutez le mot-clé volatile, cela peut également empêcher les exceptions NPE causées par. réorganisation des instructions.

Style chinois affamé?: l'objet a déjà été instancié lors du chargement de la classe. Si les besoins en mémoire ne sont pas élevés, utilisez le style chinois affamé. Il est simple, n'est pas sujet aux erreurs et n'en contient pas. problèmes de sécurité et de performances de concurrence.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Un article pour comprendre le modèle singleton en JavaScript Un article pour comprendre le modèle singleton en JavaScript Apr 25, 2023 pm 07:53 PM

Le modèle JS singleton est un modèle de conception couramment utilisé qui garantit qu'une classe n'a qu'une seule instance. Ce mode est principalement utilisé pour gérer les variables globales afin d'éviter les conflits de noms et les chargements répétés. Il peut également réduire l'utilisation de la mémoire et améliorer la maintenabilité et l'évolutivité du code.

Réflexions sur les problèmes de sécurité des threads en mode singleton en PHP Réflexions sur les problèmes de sécurité des threads en mode singleton en PHP Oct 15, 2023 am 10:14 AM

Réflexion sur les problèmes de sécurité des threads du mode singleton en PHP Dans la programmation PHP, le mode singleton est un modèle de conception couramment utilisé. Il peut garantir qu'une classe n'a qu'une seule instance et fournir un point d'accès global pour accéder à cette instance. Cependant, lors de l'utilisation du modèle singleton dans un environnement multithread, les problèmes de sécurité des threads doivent être pris en compte. L'implémentation la plus basique du modèle singleton comprend un constructeur privé, une variable statique privée et une méthode statique publique. Le code spécifique est le suivant?: classSingleton{pr

L'application du mode singleton et du mode usine dans la surcharge et la réécriture de fonctions C++ L'application du mode singleton et du mode usine dans la surcharge et la réécriture de fonctions C++ Apr 19, 2024 pm 05:06 PM

Modèle Singleton?: fournissez des instances singleton avec différents paramètres via une surcharge de fonctions. Modèle d'usine?: créez différents types d'objets grace à la réécriture de fonctions pour dissocier le processus de création des classes de produits spécifiques.

Premiers pas avec PHP?: modèle Singleton Premiers pas avec PHP?: modèle Singleton May 20, 2023 am 08:13 AM

Dans le développement de logiciels, nous rencontrons souvent des situations où plusieurs objets doivent accéder à la même ressource. Afin d'éviter les conflits de ressources et d'améliorer l'efficacité du programme, nous pouvons utiliser des modèles de conception. Parmi eux, le modèle singleton est un moyen couramment utilisé pour créer des objets, qui garantit qu'une classe n'a qu'une seule instance et fournit un accès global. Cet article explique comment utiliser PHP pour implémenter le modèle singleton et fournit quelques suggestions de bonnes pratiques. 1. Qu'est-ce que le mode singleton ?Le mode singleton est un moyen couramment utilisé pour créer des objets. Sa caractéristique est de garantir qu'une classe n'a qu'une seule instance et fournit.

En PHP, quel est le concept de design pattern singleton ? En PHP, quel est le concept de design pattern singleton ? Aug 18, 2023 pm 02:25 PM

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global. Il garantit qu'un seul objet est disponible et sous contr?le dans l'application. Le modèle Singleton fournit un moyen d'accéder directement à son objet unique sans instancier l'objet de la classe. Exemple<?php classdatabase{ publicstatic$connection;

Modèles de conception PHP?: le chemin vers l'excellence du code Modèles de conception PHP?: le chemin vers l'excellence du code Feb 21, 2024 pm 05:30 PM

Introduction Les modèles de conception PHP sont un ensemble de solutions éprouvées aux défis courants du développement de logiciels. En suivant ces modèles, les développeurs peuvent créer un code élégant, robuste et maintenable. Ils aident les développeurs à suivre les principes SOLID (responsabilité unique, ouvert-fermé, remplacement de Liskov, isolation d'interface et inversion de dépendance), améliorant ainsi la lisibilité, la maintenabilité et l'évolutivité du code. Types de modèles de conception Il existe de nombreux modèles de conception différents, chacun ayant son propre objectif et ses avantages. Voici quelques-uns des modèles de conception PHP les plus couramment utilisés?: Modèle Singleton?: garantit qu'une classe n'a qu'une seule instance et fournit un moyen d'accéder à cette instance de manière globale. Modèle d'usine?: crée un objet sans spécifier sa classe exacte. Il permet aux développeurs de conditionnellement

Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Oct 15, 2023 pm 04:48 PM

Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Introduction : Avec le développement rapide d'Internet, les systèmes distribués sont devenus un sujet br?lant dans le développement de logiciels modernes. Dans les systèmes distribués, la sécurité des threads a toujours été un problème important. Dans le développement PHP, le modèle singleton est un modèle de conception couramment utilisé, qui peut résoudre efficacement les problèmes de partage de ressources et de sécurité des threads. Cet article se concentrera sur les scénarios d'application et les processus de sécurité des threads du modèle singleton dans les systèmes distribués PHP, et fournira des exemples de code spécifiques. 1. Mode singleton

Qu'est-ce qu'un singleton singleton en JavaScript? Qu'est-ce qu'un singleton singleton en JavaScript? May 23, 2025 pm 11:09 PM

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global dans JavaScript. 1) Utilisez les fermetures et l'IIFE pour atteindre l'unicité et l'accès global. 2) Mais l'attention doit être accordée à la gestion mondiale de l'état, aux tests unitaires et aux problèmes d'évolutivité. 3) Il est recommandé de minimiser l'état mondial, de considérer les alternatives et d'effectuer une conception modulaire.

See all articles