Vous êtes sur la page 1sur 9

PROGRAMMATION

JAVA
Instructeur : AKOGO Raphael
Sance V: Les Threads d'excution
ARNAUD KALIPE HAVE
LEARNT THIS !!!!!!!!!!!!!!!!
Introduction
Lorsqu'on lance une application, elle s'excute dans un flux d'excution appel un
thread. La classe modlisant un thread est la classe java.lang.Threaddont voici
quelques proprits et mthodes :
currentThread() donne le thread actuellement en cours d'excution
setName() fixe le nom du thread
getName() nom du thread
isAlive() indique si le thread est actif(true) ou non (false)
start() lance l'excution d'un thread
run() mthode excute automatiquement aprs que la mthode start
prcdente ait t excute
sleep(n) arrte l'excution d'un thread pendant n millisecondes
join() opration bloquante - attend la fin du thread pour passer l'instruction
suivante
Les constructeurs les plus couramment utiliss sont les suivants :
Thread() cre une rfrence sur une tche asynchrone. Celle-ci est encore
inactive. La tche cre doit possder la mthode run: ce sera le plus souvent
une classe drive de Thread qui sera utilise.
Thread(Runnableobject) idem mais c'est l'objet Runnablepass en paramtre
qui implmente la mthode run.
Exemple de Thread
Cration de threads d'excution
Il est possible d'avoir des applications o des morceaux de code s'excutent de faon
"simultane" dans diffrents threads d'excution. Lorsqu'on dit que des threads
s'excutent de faon simultane, on commet souvent un abus de langage. Si la machine
n'a qu'un processeur comme c'est encore souvent le cas, les threads se partagent ce
processeur : ils en disposent, chacun leur tour, pendant un court instant (quelques
millisecondes). C'est ce qui donne l'illusion du paralllisme d'excution. La portion de
temps accorde un thread dpend de divers facteurs dont sa priorit qui a une valeur
par dfaut mais qui peut tre fixe galement par programmation. Lorsqu'un thread
dispose du processeur, il l'utilise normalement pendant tout le temps qui lui a t
accord.
Cependant, il peut le librer avant terme :
en se mettant en attente d'un vnement (wait, join)
en se mettant en sommeil pendant un temps dtermin (sleep)
1. Un thread T peut tre cr de diverses faons
en drivant la classe Thread et en redfinissant la mthode runde celle-ci.
en implmentant l'interface Runnabledans une classe et en utilisant le constructeur
new Thread(Runnable).
Runnableest une interface qui ne dfinit qu'une seule mthode : public voidrun().
L'argument du constructeur prcdent est donc toute instance de classe implmentant
cette mthode run.
Dans l'exemple qui suit, les threads sont construits l'aide d'une classe anonyme
drivant la classe Thread :
La mthode runse contente ici de renvoyer sur une mthode affiche.
2. L'excution du thread T est lanc par T.start() : cette mthode appartient la
classe Thread et opre un certain nombre d'initialisations puis lance
automatiquement la mthode rundu Thread ou de l'interface Runnable. Le
programme qui excute l'instruction T.start() n'attend pas la fin de la tche T : il
passe aussitt l'instruction qui suit. On a alors deux tches qui s'excutent en
parallle. Elles doivent souvent pouvoir communiquer entre elles pour savoir o
en est le travail commun raliser. C'est le problme de synchronisation des
threads.
Cration de threads d'excution (suite)
Cration de threads d'excution (suite)
3. Une fois lanc, le thread s'excute de faon autonome. Il s'arrtera lorsque la
fonction runqu'il excute aura fini son travail.
4. On peut attendre la fin de l'excution du Thread T par T.join(). On a l une
instruction bloquante : le programme qui
l'excute est bloqu jusqu' ce que la tche T ait termin son travail. C'est galement
un moyen de synchronisation.
Cas pratique : Une horloge graphique
Dmarche
Cas pratique : Une horloge graphique
Importation obligatoire
Variable
Cas pratique : Une horloge graphique

Vous aimerez peut-être aussi