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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!