Académique Documents
Professionnel Documents
Culture Documents
Thread
Thread
Prsent par:
EL GHARDEGUE
Souad
Encadr par:
LOTFI Hicham
Les threads:
Les threads sont des fils d'excution dun
programme. Lorsque nous en crons plusieurs,
nous pouvons excuter des tches
simultanment.
Il existe deux faons de crer un nouveau
thread.
Crer une classe hritant de la classe Thread
Exemple :
Voici un programme qui va lancer trois
threads simples, chacun dentre eux se
contentantdafficher un certain nombre de
fois un texte donn, savoir :
10 fois "bonjour" pour le premier thread,
12 fois "bonsoir" pour le deuxime
thread,
5 fois un changement de ligne pour le
troisime thread.
Exemple :
class Ecrit extends Thread
{ public Ecrit (String texte, int nb)
{ this.texte = texte ;
this.nb = nb ;
}
public void run ()
{ for (int i=0 ; i<nb ; i++)
System.out.print (texte) ;
}
Exemple :
public static void main(String[] args) {
Ecrit e1 = new Ecrit ("bonjour", 10) ;
Ecrit e2 = new Ecrit ("bonsoir", 12) ;
Ecrit e3 = new Ecrit ("\n", 5) ;
e1.start() ;
e2.start() ;
e3.start() ;
}
Exemple :
class Ecrit implements Runnable
{ public Ecrit (String texte, int nb, long attente)
{ this.texte = texte ;
this.nb = nb ;
this.attente = attente ;
}
public void run ()
{ try
{ for (int i=0 ; i<nb ; i++)
{ System.out.print (texte) ;
Thread.sleep (attente) ; // attention Thread.sleep
}
}
catch (InterruptedException e) {} // impose par sleep
}
private String texte ;
private int nb ;
private long attente ;}
Exemple :
public class TstThr3
{
public static void main (String args[])
{
Ecrit e1 = new Ecrit ("bonjour ", 10, 5) ;
Ecrit e2 = new Ecrit ("bonsoir ", 12, 10) ;
Ecrit e3 = new Ecrit ("\n", 5, 15) ;
Thread t1 = new Thread (e1) ;
t1.start() ;
Thread t2 = new Thread (e2) ;
t2.start() ;
Thread t3 = new Thread (e3) ;
t3.start() ;
}
}
(1)
Thread.MAX_PRIORITY (10)
Exercice :
Un "compteur" a un nom (Toto par exemple) et il
compte de 1 n (nombre entier positif quelconque).
Il marque une pause alatoire entre chaque nombre
(de 0 5000 millisecondes par exemple). Un
compteur affiche chaque nombre (Toto affichera par
exemple, "Toto : 3") et il affiche un message du type
"*** Toto a fini de compter jusqu' 10" quand il a
fini.
Ecrivez la classe compteur et testez-la en lanant
plusieurs compteurs qui comptent jusqu' 10. Voyez
celui qui a fini le plus vite.
Correction :
public class Compteur extends Thread {
String nom;
int max;
public Compteur(String nom, int max) {
this.nom = nom;
this.max = max; }
public Compteur(String nom)
{this.nom = nom;
this.max = 10; }