Académique Documents
Professionnel Documents
Culture Documents
Programmation Multitâches
(Multithreading)
COURS : PROGRAMMATION RÉSEAU
R. HACHEMI
Programmation Multitâches (Multithreading)
public Thread() ;
public Thread (Runnable runnable) ;
//Car Thread implémente l’interface Runnable
void yield () Indique à la JVM que le thread peut être suspendu pour
donner la main à d’autres threads.
static int enumerate (Thread[]) Copie dans un tableau de threads, les threads actifs.
Cycle de vie d’un Thread
état du thread lors de son
instanciation
Cycle de vie d’un Thread
interface Runnable {
public void run() ;
}
Interface java.lang.Runnable
class CompteBancaire {
private int solde = 2000;
public int getSolde () {
return this.solde;
}
public void retrait (int somme) {
if (somme < this.solde) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
this.solde -= somme;
System.out.println("Compte débité de " + somme + " dinars");
}
}
}
Synchronisation des Threads
Exemple
class RunCompteBancaire implements Runnable {
private CompteBancaire cb;
public RunCompteBancaire (CompteBancaire cb) {
super();
this.cb = cb;
}
public void run () {
cb.retrait(2000) ;
System.out.println("Il vous reste " + cb.getSolde() + " dinars");
}
}
void methodeInstance () {
...
synchronized (this) {
// bloc de code critique
...
}
}
...
void methodeClasse () {
...
synchronized (MaClasse.class) {
// bloc de code critique
...
}
}