Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 1 IJA – TD 8 Les threads en Java.

Slides:



Advertisements
Présentations similaires
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Advertisements

Page 1 Les applets Jacques Lonchamp. Page 2 Présentation Une applet est téléchargée à partir dune machine distante qui fournit le code. Ce chargement.
Plan du cours 5:Threads introduction Définition Création des Threads
JAV - TD 6 Structures de données JAVA
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
Programmation orientée objet
NSY102 1 Concurrence compléments Notes de cours Cnam Paris jean-michel Douin, douin au cnam point fr 19 Mars 2007.
Multi-Thread Jian-Yun Nie
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Introduction à la programmation objet avec java
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 7 IJA Les interfaces graphiques JAVA.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 3 IJA Bases du langage bibliothèques standards composition communication entre objets.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
Frédéric Le Mouël, Stéphane Frénot, Frédérique Laforest, Tarak Chaari – Dpt TC JAV 1 JAV – TD 8 Les threads en Java.
Programmation créative Semaine 03. Agenda de leçon  Rotation d’un sprite  Modifier la couleur d’un sprite (lutin)  Son et musique  Souris  Glisser.
1 / 15 Animation - 3 décembre 2008 Les Logiciels libres éducatifs, Des Solutions pour les écoles.
Programmation orientée objet AppInventor ArduBlock Communication
Module S41 Chapitre 11  Configuration de Windows XP Professionnel pour l'informatique mobile.
Présentation de Java 2006 INSA lyon
Comment corriger son code sans forcément appeler l’enseignant M2202
SanMarco – Outil MicroStrategy Manuel d’utilisation sur les fonctionnalités 27 juillet 2015.
Modèle objet : les classes
java : l'héritage (rappel)
Threads et Lightweight Processes
Pas de variable globale
Les notions de classe et d'objet
JavaScript.
Qu'est-ce que POSIX? Une librairie en langage C
TP N°2 : les Adresses IP *IP: Internet Protocol
5 – PARALLELISME , ORDONNANCEMENT
Javadoc et débogueur Semaine 03 Version A17.
Principes de programmation (suite)
Langages de programmation TP7
Chapitre 12 Surveillance des ressources et des performances
Développement JAVA pour plateforme ANDROID
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Langages de programmation TP10
E) Constructeurs et héritage
Les interfaces en PHP.
Evénements.
Système flexible de Workflow pour la plate-forme Motu
Programmation système
Présentation initiale
Bienvenue sur Coursinfo.fr
Places Send File Receive Messages.
Développement d’une Application CORBA
Le Java premiers pas.
Les classes et les objets
Java : Socket et Réseaux
Cours 5: Scripts Clients
Présentation SWING Siwar hadj hassen Omar ben yahya.
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Schéma de conception Factory Method Exemple
Système d’exploitation: Principe IFT6800 – E 2008 Pierre Poulin.
Flowchart Itération Cours 04.
Threads et Lightweight Processes
Ordonnancement des processus sous Windows NT
STREAMS (et fichiers).
Structure de données Les listes.
Bases de données Singleton pour la connexion
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
Contenu Systèmes de test parallèles Multithreading Synchronisation
TP N°6: Construction d’un Serveur Multi-Client
TP N°4 Développement d’ une application
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
L’apprentissage par la robotique Mr. Zouari Lazhar
Transcription de la présentation:

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 1 IJA – TD 8 Les threads en Java

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 2 Les threads – Objectifs Thread = fil d’exécution dans un processus Permet au sein d’un même programme (processus) d’exécuter parallèlement plusieurs tâches, de manière indépendante ou de manière synchronisée Tout objet Java s’exécute dans au moins un thread

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 3 Les threads – Vie et mort Exécution de tâches en // Mémoire, Code et Ressources partagés Économie de ressources Un thread ~= méthode qui rend immédiatement la main Exemple événements (IHM, GC) + priorités + synchronisation –(moniteur, synchronized) Implantation dépendante du SE

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 4 Les threads – Syntaxe 1 L’héritage à partir de Thread est contraignant car il empêche tout autre héritage public class Compteur extends Thread { public void run() {...} } Compteur c = new Compteur(); c.start();

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 5 Les threads – Syntaxe 2 L’implémentation de l’interface Runnable permet une grande flexibilité : possibilité d’héritage et d’implémentation d’autres interfaces public class Compteur implements Runnable { public void run() {...} } Compteur c = new Compteur(); new Thread(c).start();

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 6 Exercice Écrire le thread Compteur des deux manières possibles Tester l’exécution du thread à partir d’un client et à partir de l’objet lui-même

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 7 Les threads – Démarrage, arrêt run, start : démarrage du thread sleep : pause de x ms du thread yield : un autre thread peut prendre la main interrup : interruption du thread isAlive : le thread est vivant ? isInterrupted : le thread est interrompu ?

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 8 Les threads – Ordonnancement et priorités L’ordonnancement est en partie dépendant des implémentations Pour 2 threads de même priorité, par défaut : round robin T1 cède la place a T2 quand sleep, wait, bloque sur un yield, synchronized getPriority, setPriority : récupération ou changement de la priorité d’exécution d’un thread par rapport aux autres

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 9 Les threads – Synchronisation synchronized sur un objet : accès critique par un seul thread à la fois à cet objet public class Compteur implements Runnable { private int c; public void run() {...} public void increment() { synchronized(this) { c++; } }

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 10 Les threads – Synchronisation Synchronisation temporelle : – join : attend la fin d’un thread – wait : thread bloqué jusqu'à ce qu'un autre thread appelle notify ou notifyAll (NB: wait libère le verrou) – notify : débloque un thread bloqué par wait (le premier en queue : FIFO) – notifyAll : débloque tous les threads bloqués par wait

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 11 Les threads – Exemple public class Compteur implements Runnable { int c = 0; boolean continuer=true; // Pattern de l’inversion de contrôle public synchronized void stop() { this.continuer = false; } public void run() { while (continuer) { this.c++; System.out.println (“Compteur = “+this.c); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); }

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 12 Exercice Écrire un compteur dont le délai entre chaque incrémentation est paramétrable Écrire un client qui lance une ‘course de compteur’ et vérifier par l’affichage du compteur que les threads s’exécutent bien en parallèle Modifier le compteur pour que le thread de tête attende son poursuivant lorsqu’il arrive sur un nombre divisible par 10 (à la maison)

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 13 Exercice Maison trier(debut, fin) { si (fin - debut < 2) { // Fin si (t[debut] > t[fin]) echanger(t[debut], t[fin]) } sinon { milieu = (debut + fin) / 2 trier(debut, milieu) trier(milieu + 1, fin) triFusion(debut, fin) // Tri fusion des moitiés }

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 14 Exercice Maison Les deux tris qui sont effectués avant la fusion sont indépendants l'un de l'autre et il est donc facile de les faire exécuter en parallèle par deux threads Implanter une version « threadée » de cet algorithme de tri en les synchronisant avec la méthode join Implanter une autre version « threadée » de cet algorithme de tri en les synchronisant avec les méthodes wait et notify

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 15 IJA – TD 8 Les applets en Java

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 16 Les applets – Objectifs Une applet est une classe compilée héritant de java.applet.Applet. Une applet est à la fois un composant graphique (hérite de Panel ) et un thread d'exécution

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 17 Les applets – Objectifs Elle est diffusée par un serveur web dans une page HTML Elle est téléchargée puis exécutée par le browser. Elle est soumise au Security Manager du browser –pas d'accès en lecture ni en écriture sur le disque du browser –connexion réseau uniquement sur le serveur d'origine –pas de chargement de librairie native –pas de lancement de processus,...

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 18 Les applets – Vie et mort

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 19 Les applets – Syntaxe public class BonjourApplet extends Applet { String msg = "bonjour"; public void init() {...} public void start() {...} public void paint(java.awt.Graphics g) {g.drawString(msg, 20, 20);} public void stop() {...} public void destroy() {...} } <APPLET code="BonjourApplet.class" codebase=" width=300 height=200>

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 20 Les applets – Démarrage, arrêt init : méthode appelée au chargement de l’applet (avant le start ) start : méthode appelée pour démarrer l’applet isActive : l’applet est vivante ? stop : méthode appelée pour arrêter l’applet destroy : méthode appelée pour détruire l’applet (libération des ressources, etc.) ( stop doit toujours être appelée avant)

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 21 Les applets – Exemple public class BonjourApplet extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); this.addItem("initialisation..."); } public void start() { this.addItem("démarrage..."); } public void stop() { this.addItem("arrêt..."); } public void destroy() { this.addItem("déchargement..."); } private void addItem(String newWord) { buffer.append(newWord); repaint(); } public void paint(Graphics g) { g.drawRect(0, 0, size().width - 1, size().height - 1); g.drawString(buffer.toString(), 5, 15); } // Message }

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 22 Exercice Écrire l’applet précédente affichant « Bonjour ! » à l’aide de la fonction drawString de la classe Graphics. Visualisez-là dans une page Web à l’aide d’un navigateur Modifier l’applet pour expérimenter d’autres méthodes de la classe Graphics, comme drawLine, drawRect, drawImage, fillRect, etc.

Stéphane Frénot, Frédéric Laforest, Frédéric Le Mouël IJA 23 Exercice Maison A l’aide des interfaces MouseListener et MouseMotionListener, écrivez une applet Tableau qui permet de tracer une ligne sur simple pression du bouton de la souris A l’aide de la classe Button et de l’interface ActionListener, modifiez le tableau précédent pour y inclure trois fonctionnalités permettant de : –Passer d’un mode de tracé de ligne à tracé de points –Changer de couleur –Effacer le tableau