Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
AVANCÉ –
PARTIE 6
Mme Nouira Sana
COURS JAVA AVANCÉ
PROGRAMMATION CONCURRENTE
LES THREADS
Mme Nouira Sana
DÉFINITION
La machine virtuelle java (JVM) permet d'exécuter plusieurs
traitements en parallèle (en pratique, ils s'exécutent par
“tranche” et en alternance sur le processeur).
Ces traitements sont gérés par des threads of control (fil de
contrôle), ou plus simplement threads.
public Message (String texte, int nb, public Ecrit (String texte, int nb, long
long attente) { attente) {
this.texte = texte ; this.nb = nb ; this.texte = texte ; this.nb = nb ;
this.attente = attente;} this.attente = attente;}
Capture de l’exception
public class MonThread extends Thread{
public void run(){
try{
... // traitement, avec des périodes de sommeil et/ou d'attente
}
catch(InterruptedException e){
... // libération propre des ressources
}
// autre traitement
}
}
EXEMPLE
public class Perroquet extends Thread{
private String nom;
public Perroquet(String nom){
this.nom = nom;
}
public void run(){
try{
for(i=0;i<3;i++){
System.out.println(nom + " est content");
Thread.sleep(500);
}
}
catch(InterruptedException e){System.out.println(e.getMessage());}
}
a1.start() ;
a2.start() ;
a1.join() ;
a2.join() ;
System.out.println("Mélanger et Cuire") ;
}
}
EXEMPLE PERROQUET
class Course {
public static void main (String[] args) {
// Il s'agit d'une classe de coureurs
System.out.println("Passage aux : ");
Coureur j = new Coureur ("Jean");
Coureur p = new Coureur ("Paul");
j.start();
p.start();
}
}
PRIORITÉ ET ETAT
Trois champs statiques dans une classe Thread qu’on peut accéder:
MIN_PRIORITY (correspond à 1) à MAX_PRIORITY (correspond à
10), NORM_PRIORITY (priorité par défaut qui correspond à 5)
La priorité d’un thread est un nombre qui lui est assigné et qui
permet d’identifier la part de ressource de traitement auquel il aura
droit dans un système découpant le temps ou quel thread sera en
exécution dans un système
Les méthodes :
La priorité est modifiée par setPriority(int i)
et accédée par int getPriority().
setDaemon(boolean) appelée avant start() permet de faire du thread un démon,
processus de basse priorité qui tourne en tâche de fond.
Méthode getState() retourne l’état (State) du Thread.
Exemples: state = RUNNABLE, state = TERMINATED, state =BLOCKED, State =
WAITING, state = New...
27
PARTAGE DE DONNÉES
Tous les threads partagent le même espace d'adressage et
peuvent donc entrer en conflit pour l'accès à une ressource.
Supposons que deux threads distincts (T1 et T2) réalisent au
même moment l'instruction i = i+1.
Cette instruction consiste en fait à au moins trois instructions de
base :
1) Lecture du contenu de i dans un registre
2) on ajoute 1 à ce registre
3) on stocke le résultat dans i.