CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.

Slides:



Advertisements
Présentations similaires
Le Nom L’adjectif Le verbe Objectif: Orthogram
Advertisements

ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
Ma surprise du Zoo.
[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Vocabulaire 6.2 Français II Bon voyage ! 1.
Page 1 Retour sur le e- tourisme. Page 2 Quelques chiffres…
Erratum C Surcharge For(int x=0; … 2.
Distance inter-locuteur
Le pluriel des noms
Les numéros
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Sud Ouest Est Nord Individuel 36 joueurs
Les identités remarquables
Les Prepositions.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Introduction à Java - les « Threads » -
Plan du cours 5:Threads introduction Définition Création des Threads
Sirop de Liège « industriel »
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
Nom du module Date Lieu de la formation. 2 Genèse du projet Historique, partenaires, publics Pour qui ? Pourquoi ? Qui ? Comment ? Quand ?
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES COHESION CULTURELLE ET EXPANSION DES IDEES SUR LE TERRITOIRE EUROPEEN.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
-17 Anticipations économiques en Europe Septembre 2013 Indicateur > +20 Indicateur 0 a +20 Indicateur 0 a -20 Indicateur < -20 Union européenne total:
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
CONCOURS DE CONAISSANCE 4 Français I Mars Il ________ la géographie (to learn).
Synchronisation et communication entre processus
1 Choisir une catégorie. Vous recevrez la réponse, vous devez donner la question. Cliquez pour commencer.
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
PM18 MONTAGE DU BLINDAGE AUTOUR DE LA QRL F. DELSAUX - 25 JAN 2005
Titre : Implémentation des éléments finis sous Matlab
Pro Senectute Vaud Unité Centres de rencontre Centre Val Paisible Lausanne.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
INDUSTRIE sa Tel : 0033(0) Fax : Projet: SKIP CAPSULES – v.1 Client: CARDIVAL HEALTH.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
1 INETOP
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Programmation concurrente
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Notre calendrier français MARS 2014
Multi-Thread Jian-Yun Nie
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Titre : Implémentation des éléments finis en Matlab
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 INETOP
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
Vocabulaire 7.1 Français II Bon voyage ! 1.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
Modélisation des données Niveau conceptuel DON-2 V0-0.
CALENDRIER-PLAYBOY 2020.
Exercice de vérification 1 p
Les Chiffres Prêts?
Elles avaient envahi le jardin, mais derrière... 1.
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Les parties du corps By Haru Mehra Le Frehindi 1Haru Mehra, DELF, DALF,CFP.
Transcription de la présentation:

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert

Module UV Java Page 2 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java n Vue densemble du langage Java n Le langage Java : syntaxe et sémantique n Programmation multi-tâche : les threads n Accéder aux bases de données n Composants réutilisables : le modèle MVC n Développement Client/Serveur n Présentation dun IDE : WSAD / Forté / JBuilder n Les serveurs dapplications J2EE n Les Enterprise JavaBeans n Ré-ingénierie dapplications Java

Module UV Java Page 3 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Threads Java n Un thread nest pas un objet n Un thread est un flot de contrôle n Un thread est une série dinstructions à exécuter n Un thread est une séquence imbriquée dappels de méthodes

Module UV Java Page 4 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Utilisation des Threads n Fenêtres Multiples n Calcul en tâche de fond n Animation n Producteur/consommateur n Serveur avec plusieurs clients (web ou autres) n Recherche (base de données, web)

Module UV Java Page 5 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle LObjet Thread n Un thread nest pas un objet n Un Thread est un objet et possède un cycle de vie Les Threads partagent la mémoire (processus) void start() –Crée un nouveau thread et le rend exécutable void run() –Le nouveau thread commence sa vie dans cette méthode

Module UV Java Page 6 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 7 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 8 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 9 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 10 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 11 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 12 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 13 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 14 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Diagrame de Création Thread Thread t = new BThread(); t.start(); Continuer(); Objet A BThread() { } void start() { // creation thread } void run() { FaireTravail(); } Objet BThread (extends Thread)

Module UV Java Page 15 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle LInterface Runnable n Lobjet thread implémente cette interface n La méthode run() de lobjet Thread appelle celle de lobjet Runnable n Ceci permet à des threads de sexécuter dans nimporte quel objet, sans utiliser lhéritage.

Module UV Java Page 16 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple dobjet Runnable //Création de lobjet pouvant être indépendant Imprimante imprimante = new Imprimante(); //lobjet devient indépendant Thread t = new Thread(imprimante); t.start();//appel de run() /******************************************/ class Imprimante implements Runnable { public void run() { while (true) { //boucle infinie System.out.println(Imprimante Prête); }}}

Module UV Java Page 17 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple dobjet Runnable //Création de lobjet pouvant être indépendant Imprimante imprimante = new Imprimante(); //lobjet devient indépendant imprimante.start();//appel de run() /******************************************/ class Imprimante implements Runnable { Thread t = null; public void start() { t = new Thread(this);// le thread est interne t.start();// le thread est lancé } public void run() { while (true) { //boucle infinie System.out.println(Imprimante Prête); }}}

Module UV Java Page 18 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Cycle de vie dun Thread Né Bloqué Exécutable Mort stop() start() stop() Actif Bloquer sur I/O I/O disponible JVM sleep(500) réveiller suspend() resume() attendre notifier

Module UV Java Page 19 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Blocage des Threads n Lorsque il y a une lecture depuis un flux, si lentrée nest pas disponible, le thread sera bloqué n Thread est suspendu (bloqué) jusquà ce que les I/O sont disponibles n Permettre aux autres threads dêtre actif automatiquement n Lorsque les I/O sont disponibles, thread se réveille et devientexécutable

Module UV Java Page 20 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Ordonnancement du Thread n En général, le thread exécutable avec la plus haute priorité est activé (running) n Java est priority-preemptive –Si un thread de haute-priorité se réveille, et un thread de basse priorité sexécute –Alors le thread de haute priorité sexécute immédiatement n Permet lexécution à la demande –utilisation efficace du CPU

Module UV Java Page 21 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Famine dun Thread n Si un thread de haute priorité nest jamais bloqué. n Alors tous les autres threads seront en attente de CPU, et ne travailleront jamais. n Prudence au niveau de la priorité dun thread.

Module UV Java Page 22 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Priorités dun Thread : Stratégies Générale n Threads qui ont beaucoup de travail à réaliser, devrait avoir une priorité plus faible. n Donner une priorité élever pour les tâches courtes. n Donner aux threads devant faire des I/O une haute priorité. –se réveiller, calculer immédiatement les données, attendre de nouveau les I/O.

Module UV Java Page 23 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Conditions de la Course n Deux threads modifient simultanément un objet n Les deux threads courent pour stocker leurs valeurs n Au final, le dernier gagne la course n (En fait, les deux perdent)

Module UV Java Page 24 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple de Conditions de Course class Compte { int solde; public void depot(int valeur) { int nouveauSolde; nouveauSolde = solde + valeur; solde = nouveauSolde; return ; }

Module UV Java Page 25 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple de Conditions de Course class Compte { int solde; public void depot(int valeur) { int nouveauSolde; nouveauSolde = solde + valeur; solde = nouveauSolde; return ; } Que se passe-t-il si lOrdonnanceur change les threads ici?

Module UV Java Page 26 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Synchronisation de Thread Mot clé du Langage : synchronized n Apporte un lock sur un objet –Lock exclusif pour le thread n Si le lock nest pas disponible, le thread sera bloqué

Module UV Java Page 27 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple Synchronization class Compte { private int solde; synchronized public void depot(int valeur) { int nouveauSolde; nouveauSolde = solde + valeur; solde = nouveauSolde ; } synchronized public void retirer(int valeur) { int nouveauSolde ; nouveauSolde = solde - valeur; solde = nouveauSolde ; }

Module UV Java Page 28 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Synchronisation de Thread n Protège laccès au code, pas aux données –Faire des membres de données privé –Synchroniser les méthodes daccès aux données n Mettre un champs de force autour de lobjet bloqué, afin quaucun autres threads ne puissent entrer Actuellement, on bloque uniquement laccès aux autres threads synchronisés

Module UV Java Page 29 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Inter-blocage de Threads (Deadlock) n Si deux threads sont en compétition pour plus dun lock n Exemple: transfert bancaire entre deux comptes –Thread A possède un lock sur le compte 1 et veut un lock sur le compte 2 –Thread B possède un lock sur le compte 2 et veut un lock sur le compte 1

Module UV Java Page 30 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eviter le Deadlock n Pas de solutions universelles n Ordonné l acquisition dun lock n Timeout n Minimiser ou supprimer la synchronisation

Module UV Java Page 31 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Wait et Notify n Permettre à deux threads de coopérer n Basé sur un objet lock simple partagé

Module UV Java Page 32 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Wait et Notify: Code n consommateur: synchronized (lock) { while (!resourceAvailable()) { lock.wait(); } consumeResource(); }

Module UV Java Page 33 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Wait and Notify: Code n Producteur: produceResource(); synchronized (lock) { lock.notifyAll(); }

Module UV Java Page 34 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 35 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 36 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 37 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 38 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 39 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 40 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 41 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupèrer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 42 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupérer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 43 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupérer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 44 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Séquence du Wait/Notify Objet Lock Consommateur Thread Producteur Thread 1. synchronized(lock){ 2. lock.wait(); 3. produceResource() 4. synchronized(lock) { 5. lock.notify(); 6.} 7. Récupérer le lock 8. Retour du wait() 9. consumeResource(); 10. }

Module UV Java Page 45 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Wait/Notify: Détails n Souvent lobjet lock est la ressource elle-même n Parfois lobjet lock est le thread producteur lui-même

Module UV Java Page 46 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Wait/Notify: Détails n Doit Boucler sur le wait(), dans le cas où dautres thread sapproprient la ressource... –Après que vous êtes notifiés –Avant que vous acquérez le lock et que vous récupérez la main suite au wait() n Utiliser lock.notifyAll() si il y a plus dun thread en attente

Module UV Java Page 47 / 47 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple Wait/Notify : Queue Bloquante class BlockingQueue extends Queue { public synchronized Object remove() { while (isEmpty()) { wait(); // really this.wait() } return super.remove(); } public synchronized void add(Object o) { super.add(o); notifyAll(); // this.notifyAll() }