« Programmation Java/Processus légers et synchronisation » : différence entre les versions
Contenu supprimé Contenu ajouté
Corrections |
|||
Ligne 35 :
Exemple :
<source lang="java">
</source>
Il est alors créé et démarré de la manière suivante :
<source lang="java">
</source>
Il n'est pas toujours possible d'étendre la classe <code>Thread</code> car Java n'autorise qu'une classe de base.
Ligne 60 :
Exemple :
<source lang="java">
</source>
Le processus léger est alors créé et démarré de la manière suivante :
<source lang="java">
</source>
== Actions sur un processus léger ==
Ligne 112 :
== Synchronisation ==
La synchronisation devient nécessaire quand plusieurs processus
=== mot-clé synchronized ===
Ligne 120 :
La syntaxe est la suivante :
<source lang="java">
</source>
Le code protégé n'est exécuté que par un seul processus léger à la fois, tant qu'il n'a pas terminé le bloc d'instruction.
Durant l'exécution de ce code protégé par un processus léger, un autre processus léger ne peut exécuter celui-ci, mais peut exécuter un autre bloc <code>synchronized</code> si celui-ci n'utilise pas le même objet et qu'il n'est pas déjà en cours d'exécution.
Le mot-clé <code>synchronized</code> peut également être utilisé dans la déclaration des méthodes :
<source lang="java">
</source>
est équivalent à :
<source lang="java">
</source>
Pour une méthode statique (méthode de classe) :
<source lang="java">
▲ public synchronized static void codeProtege() {
▲ ... code non protégé ...
▲ }
▲ }
</source>
est équivalent à :
<source lang="java">
</source>
=== Attente et signal ===
Quand le mot-clé <code>synchronized</code> ne suffit pas (par exemple, permettre l'accès à deux
La classe <code>Object</code> possède les méthodes suivantes :
Ligne 182 ⟶ 181 :
Exemple :
<source lang="java">
</source>
Comme ces méthodes sont définies dans la classe <code>Object</code>, il est possible de les utiliser avec n'importe quel type d'objet,et donc les chaînes de caractères et les tableaux.
|