Table des matières
résumé :
Maison Java javaDidacticiel Introduction aux quatre méthodes utilisées par synchronisé

Introduction aux quatre méthodes utilisées par synchronisé

Oct 08, 2018 pm 03:16 PM
synchronized

Cet article vous présente les quatre méthodes d'utilisation synchronisées. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. Modifier une méthode
synchronisée Modifier une méthode est très simple, il suffit d'ajouter synchronisé devant la méthode, par exemple :

public synchronized void method()
{
   // todo
}
Copier après la connexion

Quand définition d'une méthode d'interface Le mot-clé synchronisé ne peut pas être utilisé.
Les méthodes constructeur ne peuvent pas utiliser le mot-clé synchronisé, mais peuvent utiliser des blocs de code synchronisés pour la synchronisation.
Le mot-clé synchronisé ne peut pas être hérité. Si vous souhaitez synchroniser, vous devez ajouter le mot-clé explicitement.
La méthode modifiée par le mot-clé synchronisé sera désynchronisée par défaut si elle est remplacée. Si vous souhaitez synchroniser, vous devez ajouter le mot-clé explicitement, ou la méthode de la classe super parent est équivalente à la synchronisation.

2. Modifier le bloc de code

public  void method()
{
   synchronized(this)
   synchronized(XX.class)
}
Copier après la connexion

synchronisé(ceci) verrouille l'objet actuel S'il y a actuellement plusieurs objets, alors il y a plusieurs copies de celui-ci. , ici Cela ne peut verrouiller que le même objet.
synchronized(XX.class) Ce verrou est utile tant qu'il s'agit d'une classe de ce type

Lorsque deux threads simultanés accèdent au bloc de code de synchronisation synchronisé(this) dans le même objet, un seul un thread peut être exécuté à la fois. Un autre thread doit attendre que le thread actuel ait fini d'exécuter ce bloc de code avant de pouvoir exécuter ce bloc de code. Lorsqu'un thread accède à un bloc de code synchronisé (this) d'un objet, un autre thread peut toujours accéder au bloc de code synchronisé non synchronisé (this) dans l'objet. Ce qui est particulièrement critique est que lorsqu'un thread accède à un bloc de code synchronisé (this) d'un objet, l'accès des autres threads à tous les autres blocs de code synchronisés (this) dans l'objet sera bloqué.
Le troisième exemple s'applique également à d'autres blocs de code synchronisés. C'est-à-dire que lorsqu'un thread accède à un bloc de code synchronisé d'un objet, il obtient le verrou d'objet de cet objet. En conséquence, l'accès des autres threads à toutes les parties de code synchronisées de l'objet objet est temporairement bloqué.
Les règles ci-dessus sont également applicables à d'autres verrous d'objets

3. Modifier les méthodes statiques
Nous savons que les méthodes statiques appartiennent à des classes et non à des objets. De même, la méthode statique modifiée par synchronisé verrouille tous les objets de cette classe, et toutes les classes auront un effet de verrouillage lors de son utilisation

public synchronized static void method() {
   // todo
   }
Copier après la connexion

4. Modifier une classe
Le La portée de l'effet est la partie entre parenthèses après la synchronisation, et les objets de l'effet sont tous des objets de cette classe. Tant qu'il s'agit d'une classe de ce type, elle fonctionnera quel que soit le nombre d'objets. Le code suivant

class ClassName {
    public void method() {
       synchronized(ClassName.class) {
                 // todo       
                 }
    }
 }
Copier après la connexion

résumé :

A. Que le mot-clé synchronisé soit ajouté à une méthode ou à un objet, si l'objet sur lequel il agit est non statique, le verrou il acquiert l'objet ; Si l'objet sur lequel la synchronisation agit est une méthode statique ou une classe, le verrou qu'il acquiert est le même pour tous les objets de la classe.
B. Chaque objet n'est associé qu'à un seul verrou. Celui qui obtient ce verrou peut exécuter le code qu'il contrôle.
C. La réalisation de la synchronisation nécessite beaucoup de temps système et peut même provoquer un blocage, alors essayez d'éviter un contrôle de synchronisation inutile.
D. Le mot-clé de synchronisation verrouille l'objet

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

Les principes et scénarios d'utilisation de Synchronized en Java et l'analyse de l'utilisation et des différences de l'interface Callable Les principes et scénarios d'utilisation de Synchronized en Java et l'analyse de l'utilisation et des différences de l'interface Callable Apr 21, 2023 am 08:04 AM

1. Fonctionnalités de base 1. Cela commence par un verrou optimiste, et si les conflits de verrouillage sont fréquents, il est converti en verrou pessimiste. 2. Cela commence par une implémentation de verrouillage légère, et si le verrou est maintenu pendant une longue période, il est activé. est converti en un verrou lourd. 3. La stratégie de verrouillage tournant qui est la plus probablement utilisée lors de l'implémentation de verrous légers 4. C'est un verrou injuste 5. C'est un verrou réentrant 6. Ce n'est pas un verrou en lecture-écriture 2. La JVM synchronisera le processus de verrouillage. Les verrous sont divisés en états sans verrouillage, verrouillage biaisé, verrouillage léger et verrouillage lourd. Il sera mis à niveau séquentiellement en fonction de la situation. Le verrouillage biaisé suppose que le protagoniste masculin est un verrou et que le protagoniste féminin est un fil. Si seulement ce fil utilise ce verrou, alors le protagoniste masculin et le protagoniste féminin peuvent vivre heureux pour toujours même s'ils n'obtiennent pas d'acte de mariage (en évitant les hauts). (opérations de coûts). Mais le second rôle féminin apparaît.

Principe de synchronisation des mots clés Java et exemple d'analyse de l'état du verrouillage Principe de synchronisation des mots clés Java et exemple d'analyse de l'état du verrouillage May 11, 2023 pm 03:25 PM

1. Le concept de verrou dans Java Spin lock : Lorsqu'un thread acquiert un verrou, si le verrou a été acquis par un autre thread, alors le thread attendra en boucle, puis continuera à juger si le verrou peut être acquis avec succès jusqu'à ce que il est acquis. Le verrou sortira de la boucle. Verrouillage optimiste : en supposant qu'il n'y ait pas de conflit, si les données s'avèrent incohérentes avec les données précédemment acquises lors de la modification des données, les dernières données seront lues et la modification sera réessayée. Verrouillage pessimiste : supposez que des conflits de concurrence se produiront, synchroniserez toutes les opérations liées aux données et commencerez le verrouillage à partir du moment où les données sont lues. Verrou exclusif (écriture) : ajoutez un verrou en écriture à la ressource. Le thread peut modifier la ressource, mais les autres threads ne peuvent pas la verrouiller à nouveau (écriture unique). Verrou partagé (lecture) : après avoir ajouté un verrou en lecture à une ressource, celui-ci peut uniquement être lu mais pas modifié. Les autres threads ne peuvent ajouter que des verrous en lecture et ne peuvent pas ajouter de verrous en écriture (plusieurs). Voir comme S

Comment utiliser synchronisé pour implémenter le mécanisme de synchronisation en Java ? Comment utiliser synchronisé pour implémenter le mécanisme de synchronisation en Java ? Apr 22, 2023 pm 02:46 PM

Résumé de l'utilisation de synchronisé en Java 1. Lorsque synchronisé est utilisé comme modificateur de fonction, l'exemple de code est le suivant : Publicsynchronizedvoidmethod(){//….} Il s'agit de la méthode de synchronisation. Alors, quel objet est synchronisé verrouillé à ce moment ? Ce qu'il verrouille appelle cet objet méthode synchronisée. En d'autres termes, lorsqu'un objet P1 exécute cette méthode de synchronisation dans différents threads, ils formeront une exclusion mutuelle pour obtenir un effet de synchronisation. Cependant, un autre objet P2 généré par la Classe à laquelle appartient cet objet peut arbitrairement appeler cette méthode en ajoutant le mot-clé synchronisé. L'exemple de code ci-dessus, etc.

Quelles sont les trois méthodes de synchronisation en Java et comment les utiliser ? Quelles sont les trois méthodes de synchronisation en Java et comment les utiliser ? Apr 27, 2023 am 09:34 AM

1. Expliquez que synchronisé est notre méthode de synchronisation la plus couramment utilisée et qu'il existe trois manières principales de l'utiliser. 2. Exemple//Synchronisation de méthode de classe générale synchroniséepublidvoidinvoke(){}//Synchronisation de méthode statique de classe synchroniséepublicstaticvoidinvoke(){}//Synchronisation de bloc de code synchronisé(objet){}La différence entre ces trois méthodes est que les objets synchronisés sont différents. Les classes ordinaires synchronisent l'objet lui-même, les méthodes statiques synchronisent la classe elle-même et les blocs de code synchronisent les objets que nous remplissons entre parenthèses. Quelles collections existe-t-il en Java ?

Quel est le principe et le processus de mise à niveau du verrouillage synchronisé Java ? Quel est le principe et le processus de mise à niveau du verrouillage synchronisé Java ? Apr 19, 2023 pm 10:22 PM

Préparation des outils Avant de parler formellement du principe de la synchronisation, parlons d'abord des verrous de rotation, car les verrous de rotation jouent un rôle important dans l'optimisation de la synchronisation. Pour comprendre les verrous de rotation, nous devons d’abord comprendre ce qu’est l’atomicité. Ce qu'on appelle l'atomicité signifie simplement que chaque opération n'est pas effectuée ou que tout faire signifie qu'elle ne peut pas être interrompue pendant l'opération. Par exemple, pour en ajouter une aux données variables, il y a les trois étapes suivantes : ajouter des données Charger. de la mémoire dans le registre. Ajoutez-en un à la valeur des données. Écrivez le résultat en mémoire. L'atomicité signifie que lorsqu'un thread effectue une opération d'incrémentation, il ne peut pas être interrompu par d'autres threads uniquement lorsque ce thread termine ces trois processus.

Pourquoi Java doit-il fournir Lock au lieu d'utiliser simplement le mot-clé synchronisé ? Pourquoi Java doit-il fournir Lock au lieu d'utiliser simplement le mot-clé synchronisé ? Apr 20, 2023 pm 05:01 PM

Résumé : Le mot clé synchronisé est fourni en Java pour garantir qu'un seul thread peut accéder au bloc de code synchronisé. Puisque le mot-clé synchronisé a été fourni, pourquoi l'interface Lock est-elle également fournie dans le package Java SDK ? Est-ce une réinvention inutile de la roue ? Aujourd’hui, nous discuterons ensemble de cette question. Le mot-clé synchronisé est fourni en Java pour garantir qu'un seul thread peut accéder au bloc de code synchronisé. Puisque le mot-clé synchronisé a été fourni, pourquoi l'interface Lock est-elle également fournie dans le package Java SDK ? Est-ce une réinvention inutile de la roue ? Aujourd’hui, parlons-en ensemble

Qu'est-ce que Java synchronisé Qu'est-ce que Java synchronisé May 14, 2023 am 08:28 AM

Qu'est-ce que Synchronized ? Les lecteurs Java ne sont pas étrangers au mot-clé synchronisé. Il peut être vu dans divers codes sources de middleware ou de codes sources du JDK. Pour les lecteurs qui ne sont pas familiers avec synchronisé, ils savent seulement que le mot-clé synchronisé doit être utilisé en multi. -le threading synchronisé peut assurer la sécurité des threads. On l'appelle : verrouillage mutex (un seul thread peut s'exécuter en même temps, les autres threads attendront), également appelé : verrouillage pessimiste (un seul thread peut s'exécuter en même temps, les autres threads attendront). vous aider à l'implémenter, les développeurs n'ont qu'à utiliser le mot-clé synchronisé. Lors de son utilisation, vous devez utiliser un objet comme mutex pour le verrou

Combien de modificateurs de non-accès existe-t-il en Java ? Combien de modificateurs de non-accès existe-t-il en Java ? Aug 30, 2023 pm 06:01 PM

Java fournit d'autres modificateurs pour fournir des fonctionnalités au-delà de la visibilité. Ces modificateurs sont appelés modificateurs de non-accès. Les membres déclarés comme statiques sont communs à toutes les instances de la classe. Les membres statiques sont des membres de niveau classe stockés dans la mémoire de classe. Final Ce modificateur est utilisé pour restreindre d'autres modifications à une variable, une méthode ou une classe. La valeur d'une variable déclarée finale ne peut plus être modifiée une fois qu'elle a obtenu sa valeur. La méthode Final ne peut pas être substituée dans une sous-classe, et une sous-classe de la classe Final ne peut pas non plus être créée. Résumé Ce modificateur peut être utilisé avec une classe ou une méthode. Vous ne pouvez pas appliquer ce modificateur aux variables et aux constructeurs. Les méthodes déclarées abstraites doivent être modifiées dans les sous-classes. Vous ne pouvez pas instancier une classe déclarée abstraite. Synchrone Ce modificateur est utilisé pour contrôler plusieurs threads

See all articles