Java:Les threads
De WIKI.minetti.org
Révision de 7 avril 2016 à 16:59 par Jp (discussion | contributions) (Page créée avec « == L'implémentation d'un thread == * Créer la classe représentant le thread en implémentant l'interface [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.htm... »)
Sommaire
L'implémentation d'un thread
- Créer la classe représentant le thread en implémentant l'interface java.lang.Runnable.
- Cette interface impose de définir la méthode suivante, contenant le traitement du thread:
public void run() { // Traitement du thread }
- Implémenter le lancement du thread en utilisant la classe java.lang.Thread:
Thread thread = new Thread(this);
Exemple
public class MyThread implements Runnable { private final Thread thread; public MyThread() { super(); thread = new Thread(this); } public void run() { // Traitement du thread } }
Contrôle du thread
La classe java.lang.Thread met à disposition des méthodes permettant de contrôler le thread.
- Pour démarrer le thread:
public void start();
- Pour arrêter définitivement le thread:
public void stop();
- Pour arrêter temporairement le thread:
public void suspend();
- Pour reprendre l'exécution du thread:
public void resume();
- Pour fixer la priorité du thread:
public void setPriority(int newPriority);
Utilisation des sémaphores
Il est de temps en temps utile de synchoniser les threads entre eux. Dans la plupart des cas, on utilise des blocs synchronized. Mais parfois ça ne suffit plus: il faut utiliser les sémaphores.
Pour créer un sémaphore (classe java.util.concurrent.Semaphore):
private final Semaphore mySemaphore = new Semaphore (0, true);
Pour attendre un autre thread:
this.mySemaphore.acquire ();
Pour débloquer l'attente (appelé par l'autre thread):
this.mySemaphore.release ();