05/12/2002 Java 2001 (PP) 1
Le multitâche en Java
Premier Cycle
Cours EURINSA 2002
(c) P.Pollet
05/12/2002 Java 2001 (PP) 2
Plan
Définition des threads
Créer un thread
Le problème de la synchronisation
Les signaux
Exemple I: Producteurs et Consommateurs
Exemple II: Animation d ’applettes
05/12/2002 Java 2001 (PP) 3
Définition des threads
La machine virtuelle JVM permet l ’exécution concurrente de
plusieurs processus dans un même programme.
Un processus est un objet sous-classe de java.lang.Thread qui
possède:
une instruction courante
un environnement (ses variables d ’instance)
un état (créé, actif, endormi,en attente, inactif, mort…)
un nom
Les Thread communiquent entre eux par des signaux (wait(),
notify()).
Les Thread doivent rendre la main à la JVM par leurs méthodes
sleep(), yield() ou suspend() (multitâche coopératif).
Les threads peuvent avoir des priorités différentes.
05/12/2002 Java 2001 (PP) 4
Créer un thread
Deux façons de créer un Thread:
Sous-classer java.lang.Thread en redéfinissant au moins la
méthode run().
Class MonThread extends Thread {
public void run() {
……. }
}
Implémenter l ’interface java.lang.Runnable et implémenter run()
Class MaClasse extends SonAncetre implements Runnable {
Thread monThread; // à créer et à lancer dans un constructeur ou init()
public void run() {
…….
}
}
Méthode obligatoire si une super-classe
est requise (applette).
Méthode la plus simple.
05/12/2002 Java 2001 (PP) 5
Etendre Thread
L ’appel à start() enregistre le Thread auprès de la JVM et
appelle la méthode run() redéfinie qui réalise le travail.
Le Thread meurt automatiquement si la méthode run() se
termine.
class Producteur extends Thread {
Producteur (….) { // un éventuel constructeur
super(); ….
}
public void run () {
while (true) {…………}
}
}
Producteur p1=new Producteur (….); p1.start();
Producteur p2=new Producteur(…..); p2.start();
Forme standard:
Ne pas oublier d ’appeler
sleep(), wait(), suspend(), yield()...
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !