Outils de d´
eveloppement,
programmation ´
ev´
enementielle et IHM
Chapitre 3 compl´
ements
Java, les threads
Cyrille Bertelle - UFRST Le Havre
0-0
Java - Les Threads
10.1 Introduction
Un programme est caract´
eris´
e par
son code
son espace m´
emoire (donn´
ees)
Sur un OS ´
evolu´
e, ex´
ecution concurrente possible des
processus avec “temps partag´
e” g´
er´
e par un scheduler
Processus 1
Processus 2 OS
1- C. Bertelle @ Universit´e du Havre
Java - Les Threads
Si processus ind´
ependants :
contexte diff´
erent `
a chaque changement de processus ;
possibilit´
e de partager une m´
emoire (lourd `
a g´
erer) ;
communications parfois n´
ecessaires.
Une solution plus simple : les threads ou processus l´
egers qui
s’ex´
ecutent en parall`
ele mais partagent les donn´
ees.
Exemple : concurrence de traitement lors de chargements
d’images avec les navigateurs Web ou environnement
graphique Java.
2- C. Bertelle @ Universit´e du Havre
Java - Les Threads
10.2 Cr´
eation de threads avec Java
Threads g´
er´
es dans diff´
erents langages. Gestion lourde avec C
et simplifi´
ee avec Java qui propose deux solutions :
Objet h´
eritant de la classe java.lang.Thread. Deux
objets de cette classe peuvent s’ex´
ecuter directement en
concurrence.
Objet impl´
ementant l’interface java.lang.Runnable
On doit d´
efinir une m´
ethode run() ;
On range ces objets dans des objets Threads
(enveloppes) qui s’ex´
ecutent concurremment.
Exemples: TestThread1.java et TestThread2.java
3- C. Bertelle @ Universit´e du Havre
Java - Les Threads
TestThread1.java
class TPrint extends Thread {
String txt;
int attente;
public TPrint(String t, int p) {
txt = t;
attente = p;
}
public void run() {
for (int i=0; i<8; i++) {
System.out.print(txt+i+" ");
4- C. Bertelle @ Universit´e du Havre
Java - Les Threads
try {
sleep(attente);
}
catch(InterruptedException e) {};
}
}
}
public class TestThread1 {
static public void main(String args[]) {
TPrint a = new TPrint("A", 100);
TPrint b = new TPrint("B", 200);
a.start();
b.start();
5- C. Bertelle @ Universit´e du Havre
Java - Les Threads
}
}
// r´
esultat de l’ex´
ecution :
// A0 B0 A1 B1 A2 A3 B2 A4 A5 B3 A6 A7 B4 B5 B6 B7
6- C. Bertelle @ Universit´e du Havre
Java - Les Threads
TestThread2.java
class TPrint implements Runnable {
String txt;
int attente;
public TPrint(String t, int p) {
txt = t;
attente = p;
}
public void run() {
for (int i=0; i<8; i++) {
System.out.print(txt+i+" ");
7- C. Bertelle @ Universit´e du Havre
Java - Les Threads
try {
Thread.currentThread().sleep(attente);
}
catch(InterruptedException e) {};
}
}
}
public class TestThread2 {
static public void main(String args[]) {
TPrint a = new TPrint("A", 100);
TPrint b = new TPrint("B", 200);
new Thread(a).start();
new Thread(b).start();
8- C. Bertelle @ Universit´e du Havre
Java - Les Threads
}
}
// r´
esultat de l’ex´
ecution :
// A0 B0 A1 B1 A2 A3 B2 A4 A5 B3 A6 A7 B4 B5 B6 B7
9- C. Bertelle @ Universit´e du Havre
1 / 14 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 !