Cours de JAVA. La gestion de processus. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Cours de JAVA. La gestion de processus. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes"

Transcription

1 Cours de JAVA La gestion de processus Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Université de Valenciennes et du Hainaut-Cambrésis source principale : «Thinking in Java (B. Eckel)»

2 Qu est-ce qu un thread? Un thread est un processus qui hérite de son processus père. Java permet la mise en commun de code, de données («light weight process» ou «processus léger») Le processus partage ses ressources système (entrées/sorties,...). La programmation est enfin sans contrainte!

3 Utilité des processus Afin de «rendre la main» au programme principal. Afin d'interagir efficacement. Pour la gestion des graphiques, des applets.

4 Définition d un Thread Pour créer une tâche, il suffit de faire hériter sa classe de la classe Thread. La principale méthode de Thread est run() La méthode yield() suspend très brièvement la tâche La classe Thread implémente l interface Runnable. Implémenter Runnable oblige à définir la méthode start().

5 Exemple de thread class une_tache extends Thread une_tache(string nom) super(nom); // appel au constructeur de Thread public void run() while (true) System.out.println("Mon nom est : " + getname()); Thread.yield(); // petite pause public class ExempleTache public static void main(string args[]) une_tache tache1 = new une_tache("tache 1"); une_tache tache2 = new une_tache("tache 2"); tache1.start(); tache2.start(); while (true) System.out.println("Je suis la tâche principale"); Thread.yield();

6 Run et Start La méthode run() est généralement constituée d'une boucle infinie La méthode start(), est utilisée pour lancer le Thread et appelle la méthode run()

7 Accès simultanés à une ressource La programmation multitâche implique le partage de ressources (mémoire, objets). Dans certains cas, ceci peut être problématique. Pour cela, Java dispose du mot clé synchronized qui assure l exclusion mutuelle d une section critique en informant le moniteur (gestionnaire de mémoire). exemple: public synchronized void compte() empêche toute instance de la classe de lancer compte tant qu elle ne s est pas terminée. Lorsqu'un thread t1 exécute cette méthode à partir d'un objet, un autre thread t2 ne peut pas l'exécuter à partir du même objet. Mais t2 peut l'exécuter pour une autre instance de la même classe.

8 Synchronisation et efficacité Chaque objet possède un verrou lock ou moniteur. (Cela fait partie de la classe Object). Exemple de verrou :... synchronized (compteur) compteur.add() ; compteur.mult() ; Lorsqu'une méthode synchronisée d'un objet est appelée, le verrou est mis, aucune autre méthode synchronisée de cet objet peut être exécutée. Acquérir le verrou d'un objet est forcément coûteux. Il faut donc savoir gérer et diminuer au maximum les sections critiques.

9 Le processus dans tous ses états Nouveau : il est créé mais start() n'est pas encore appelé Exécutable : il a été initialisé (il est exécuté si l'ordonnanceur le décide) Mort : fin normale d'un Thread (sortie de la méthode run() Bloqué : l'ordonnanceur ignore le Tread

10 Raison d'un blocage Le thread peut être : endormi : sleep(milliseconds) suspendu : par suspend(). Il sera alors relancé par resume() en attente : par wait(). Il pourra alors être réactivé par notify() ou notifyall() IO : en attente d'une Entrée/Sortie synch : en attente de la libération d'une ressource synchronisée

11 Différence Wait/Suspend Suspend : Tient le verrou de l'objet, donc bloque dans les méthode synchronisées et peut être source de DeadLock Wait ne tient pas les verrous et donc ne doit pas être appelé d'un bloc synchronisé, sous risque d'accès concurrent

12 Remarques... Il faut éviter l'utilisation de : stop : cette méthode libère les verrous même si l'objet est dans un état instable Il faut le remplacer par un test dans la boucle du run() lever l'exception InterrupedException en utilisant la méthode interrupt() suspend (et donc resume), car ils sont sources de nombreux deadlock

13 Exercice Un exemple classique de programmation de processus : le producteur-consommateur. Un producteur produit des objets dans une pile, 2 consommateurs en consomment. Ecrire les classes TabObjets, Producteur et Consommateur, ainsi que la classe principale.

14 Exemple de thread (1/5) class TabObjets private Object tampon[]; private int taille, produits, consommes, nbobjetscourants; public TabObjets (int _taille) tampon = new Object[taille]; taille = _taille; produits = consommes = nbobjetscourants = 0; public synchronized void depose(object obj) while (nbobjetscourants == (taille-1)) try wait(); // s il y a trop d objet, mettre en attente le déposeur catch (InterruptedException e) nbobjetscourants++; tampon[nbobjetscourants] = obj; produits++; notify(); // réveille un processus en attente de non vide... Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis

15 Exemple de thread (2/5) class TabObjets... public synchronized Object preleve() while (nbobjetscourants == 0) try wait(); // s il n y a pas assez d objets, mettre en attente le retireur catch (InterruptedException e) Object obj = tampon[nbobjetscourants]; tampon[nbobjetscourants] = null; nbobjetscourants --; consommes++; notify(); // réveille un processus en attente de non plein return obj;

16 Exemple de thread (3/5) class Producteur extends Thread private TabObjets tab; private int val = 0; String nom; public producteur(string _nom, TabObjets _tab) nom = _nom; tab = _tab; public void run() while (true) System.out.println(nom + " : je dépose l objet "+val); tab.depose(new Integer(val)); val++; try Thread.sleep((int)(Math.random()*100)); // 100 ms max catch (InterruptedException e)

17 Exemple de thread (4/5) class Consommateur extends Thread private TabObjets tab; String nom; public consommateur(string _nom, TabObjets _tab) nom = _nom; tab = _tab; public void run() while (true) String nom_obj = (Integer)tab.preleve()).toString(); System.out.println(nom + ": je prélève l objet " + nom_obj) ; try Thread.sleep((int)(Math.random()*200)); // max 200 ms catch (InterruptedException e)

18 Exemple de thread (5/5) class ProductConsom public static void main(string args[]) TabObjets tab = new TabObjets(5); Producteur prod = new Producteur("product", tab); Consommateur cons1 = new Consommateur("consom 1", tab); Consommateur cons2 = new Consommateur("consom 2", tab); prod.start(); cons1.start(); cons2.start(); try Thread.sleep(10000); // attente 10 sec. catch (InterruptedException e) cons2.stop(); cons1.stop(); prod.stop();

19 Volatilité La JVM de Java est composée d'une mémoire centrale et d'une mémoire cache Un attribut peut être modifié en cache par un processus, la valeur est stockée dans un registre Si un autre processus souhaite accéder à l'attribut, il reçoit la valeur de la mémoire centrale Certains attributs doivent donc être raffraichis en permanence Utilisation du mot clé volatile

20 Volatilité int volatile valeur = 0; Les attributs volatiles : sont chargées de la mémoire centrale avant chaque utilisation. sont stockées en mémoire centrale après chaque accès/ écriture. A utiliser si une variable est partagée, hors d'un bloc synchronisé

21 Attente de processus La méthode join() permet de mettre en attente de fin d 'un processus les processus suivants Thread process = new Thread(); Thread processsuivant= new Thread(); process.start(); process.join(); //processsuivant ne démarre que lorque process n'est plus en vie processsuivant.start();

22 Groupe de processus Regroupement des Threads par un ThreadGroup. Appliquer à un ensemble de processus une même opération Un processus ne peut changer de groupe Le groupe par défaut est le main System.out.println("groupe de threads par défaut : " + Thread.currentThread().getThreadGroup());.. java.lang.threadgroup[name=main,maxpri=10]

23 Groupe de processus Pour retrouver le nombre de processus actifs d'un groupe :.activecount() Définition d'un groupe : ThreadGroup mongroupe = new ThreadGroup("Mon groupe"); Création d'un processus dans un groupe : processmarchand = new Thread(monGroupe, producteur, "processus marchand");

24 Priorité des processus Gérer l'ordre d'exécution Priorités dépendantes du S.E. (ok pour Unix, et Mac) Le processus de priorité la plus grande s'exécute en premier Priorité comprise entre 1 (MIN_PRIORITY) et 10 (MAX_PRIORITY), la normale étant 5 (NORM_PRIORITY)

25 Priorité des processus Priorité des processus exécutés par la JVM : 4 Screen Updater 5 Thread utilisateur (défaut) 5 main 5 SunToolkit.PostEventQueue-0 5 Signal dispatcher 5 AWT-Windows 6 AWT-EventQueue-0 8 Finalizer 10 Reference Handler

26 Priorité des processus Affectation d'une priorité (entre 1 et 10) : monprocessus.setpriority(9); Récupération de l'ordre de priorité : int prio = monprocessus.getpriority();

JAVA - Compléments du cours 9 -Correction

JAVA - Compléments du cours 9 -Correction JAVA - Compléments du cours 9 -Correction Nicolas Baudru Année 2008-2009 Exercice 1 (Création de threads) Pourquoi existe-t-il deux méthodes? Quels sont les diérences entre ces deux méthodes? Une classe

Plus en détail

Programmation Orientée Objet avancée avec Java

Programmation Orientée Objet avancée avec Java Dans ce document, la description des classes de l API ne prétend aucunement être exhaustive. Reportez-vous à l API en question pour connaître tous les détails de cette classe. Chapitre III Thread Chapitre

Plus en détail

Chapitre 3 Les Threads en Java

Chapitre 3 Les Threads en Java DÉVELOPPEMENT D APPLICATIONS RÉPARTIES Les Threads en Java Amen Ben Hadj Ali amenbha@hotmail.com ISI-L3SIL 2011-2012 2 - Les Threads en Java Plan 1 2 3 Introduction Gestion des threads Synchronisation

Plus en détail

Processus et concurrence

Processus et concurrence Concurrence (1/2) Inf 431 Cours 10 Processus et concurrence Les programmes séquentiels exécutent séquentiellement leurs instructions ils ne font qu une seule chose à la fois Mais il faut : jeanjacqueslevynet

Plus en détail

Chapitre 1. Programmation multitâches avec les threads

Chapitre 1. Programmation multitâches avec les threads Chapitre 1. Programmation multitâches avec les threads 1. Programmation multitâche Tous les systèmes d exploitation actuels ont la possibilité d effectuer plusieurs tâches en simultané. Toute l informatique

Plus en détail

Java License Profesionnelle CISI

Java License Profesionnelle CISI Java License Profesionnelle CISI 2009-2010 Cours 12 : les threads (c) Claude Delannoy, Programmer en Java, chap. 11 1 Introduction Qu est ce qu un Thread? - Actuellement, toutes les machines qu elles soient

Plus en détail

Cours de JAVA. Les applets. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes. Université de Valenciennes et du Hainaut-Cambrésis

Cours de JAVA. Les applets. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes. Université de Valenciennes et du Hainaut-Cambrésis Cours de JAVA Les applets Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Université de Valenciennes et du Hainaut-Cambrésis source principale : «Thinking in Java (B. Eckel)» Une Applet...

Plus en détail

Exceptions. Un moyen de structurer le traitement des cas exceptionnels.

Exceptions. Un moyen de structurer le traitement des cas exceptionnels. Exceptions Un moyen de structurer le traitement des cas exceptionnels. Principe: 1. une instruction génère une exception une exception est un objet 2. l'exception se propage a.vers les blocs englobants

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 21 septembre 2016 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 21

Plus en détail

JAVA - Compléments du cours 9

JAVA - Compléments du cours 9 JAVA - Compléments du cours 9 Nicolas Baudru Année 2008-2009 Exercice 1 (Création de threads) En Java, il existe deux méthodes pour créer des threads. La première étend la classe Thread : class MonThread

Plus en détail

Synchronisation de threads en Java TP2 et TP3 : Pratique

Synchronisation de threads en Java TP2 et TP3 : Pratique Synchronisation de threads en Java TP2 et TP3 : Pratique V. Danjean R. Lachaize Généralités Les parties 1 et 2 sont des rappels de cours avec la présentation de la syntaxe Java pour la synchronisation.

Plus en détail

Programmation concurrente

Programmation concurrente Programmation concurrente exécution parallèle : opérations executées en parallèle (comparer à l exécution séquentielle) programmation concurrente : indication de parallélisme potentiel dans le programme

Plus en détail

Programmation concurrente en java

Programmation concurrente en java Programmation concurrente en java M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation concurrente 1 / 29 Plan 1 Introduction 2 Création d'un thread

Plus en détail

Les tâches et la synchronisation en langage Java

Les tâches et la synchronisation en langage Java Les tâches et la synchronisation en langage Java Les threads, les verrous, les sémaphores et les moniteurs en Java D après les cours de D. Genthial et B. Caylux Langage Java Threads et synchronisation

Plus en détail

RMI. Fabrice Rossi 4 juin 2003

RMI. Fabrice Rossi 4 juin 2003 RMI Fabrice Rossi 4 juin 2003 1 Connexion personnalisée Quand on accède à un serveur représenté par un objet RMI identifié par un nom dans le registry, la connexion obtenue ne tient pas compte de l identité

Plus en détail

Concurrence rendez vous. Rémi Forax

Concurrence rendez vous. Rémi Forax Concurrence rendez vous Rémi Forax Echange d'information Si deux threads veulent s'échanger des données Les données vont transitées par le tas (dans des champs) Il faudra une ou plusieurs sections critiques

Plus en détail

Programmation en Java Multi- thread. NGUYEN Thi Minh Tuyen

Programmation en Java Multi- thread. NGUYEN Thi Minh Tuyen Programmation en Java Multi- thread Premier exemple public class Chien{ public void aboyer(){ mul>threading //... public class Test{ public static void main(string[] args){ Chien c1= new Chien(); Chien

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

Programmation Orientée Objet (7 ème Séance)

Programmation Orientée Objet (7 ème Séance) 1 Université de la Manouba Ecole Supérieure de Commerce Electronique Programmation Orientée Objet (7 ème Séance) 2 ème année E-Serv et E-Com 2009/2010 Réalisé par : Nabil KHEMIRI nabil.khemiri@yahoo.fr

Plus en détail

Licence SIL -ACPI. Programmation Concurrente en Java. Les processus (classiques ou légers)

Licence SIL -ACPI. Programmation Concurrente en Java. Les processus (classiques ou légers) Licence SIL -ACPI Programmation Concurrente en Java Les processus (classiques ou légers) Colette Johnen johnen@labri.fr www.labri.fr/~johnen 1 Définition Un programmes est une entité statique (fichier

Plus en détail

Processus légers. LIF12-Systèmes d Exploitation. Univ. Claude Bernard Lyon 1

Processus légers. LIF12-Systèmes d Exploitation. Univ. Claude Bernard Lyon 1 Processus légers LIF12-Systèmes d Exploitation Yves Caniou yves.caniou@univ-lyon1.fr CM + TD + TP Jacques Delmas jacques.delmas@univ-lyon1.fr TD Fabien Rico fabien.rico@univ-lyon1.fr TP Joseph Garnier

Plus en détail

Plan du cours 5:Threads

Plan du cours 5:Threads Plan du cours 5:Threads introduction Définition Création des Threads Gestion des priorités Synchronisation Page : 1 Introduction(1) Les structure de contrôle: If.. Else.. While Switch. Try..catch.. Offrent

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

Cours 3: Synchronisation entre processus : suite de l étude des outils

Cours 3: Synchronisation entre processus : suite de l étude des outils Cours 3: Synchronisation entre processus : suite de l étude des outils Batterie d algorithmes et outils de synchronisation : 2 catégories (Masquer les interruptions -> plus de concurrence -> plus de pbms!)

Plus en détail

Les threads le langage java VII-1 JMF

Les threads le langage java VII-1 JMF le multithreading VII-1 Définition Une thread (appelée aussi processus léger ou activité) est un fil d'instructions (un chemin d exécution) à l'intérieur d'un processus. Contrairement aux processus, les

Plus en détail

Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes

Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes ISTV Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Contenu Ce document est en quelque sorte un résumé du cours de Java, à ceci près qu il ne contient pas encore d informations

Plus en détail

Programmation multitâches avec les Threads

Programmation multitâches avec les Threads Programmation multitâches avec les Threads A. Introduction A.1. Programmation multitâche Tous les systèmes d'exploitation actuels ont la possibilité d'effectuer plusieurs tâches en simultané. En effet,

Plus en détail

Système d exécution Java

Système d exécution Java Programmation Réseau Système d exécution Java Jean-Baptiste.Yunes@univ-paris-diderot.fr! UFR Informatique! 2013-2014 Les Threads on rappelle qu un processus est un programme (de nature statique) en cours

Plus en détail

Programmation avancée et répartie en Java : rappels sur les mots-clés de Java

Programmation avancée et répartie en Java : rappels sur les mots-clés de Java Programmation avancée et répartie en Java : rappels sur les mots-clés de Java Frédéric Gava L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours de M1 MIAGE Plan 1 Flot de contrôle 2 Plan 1

Plus en détail

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan

Plus en détail

Organisation. Parallélisme

Organisation. Parallélisme Parallélisme Organisation Eric Goubault Commissariat à l Energie Atomique, Saclay & Chaire Ecole Polytechnique/Thalès 1 Complémentaire du cours système, faisant suite au cours d informatiqu fondamentale

Plus en détail

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009 Institut Supérieur d Informatique Chapitre 02 Synchronisation des processus Dr. Mohamed-Wassim YOUSSEF 2009 [www.wassimyoussef.info] Systèmes d exploitation avancées 1 ING ISI 1 ére année Ingénieur en

Plus en détail

ENVIRONNEMENT CLIENT/SERVEUR

ENVIRONNEMENT CLIENT/SERVEUR ENVIRONNEMENT CLIENT/SERVEUR Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn Plan 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

Programmation Multi-Threading en Java

Programmation Multi-Threading en Java Programmation Multi-Threading en Java Christophe Gravier, Frédérique Laforest, Julien Subercaze Télécom Saint-Étienne Université Jean Monnet {prénom.nom}@univ-st-etienne.fr FI2_INFO4 2012 2013 1 / 35 Plan

Plus en détail

Module POA 2nde partie : Exercices

Module POA 2nde partie : Exercices Module POA 2nde partie : Exercices Exercices sur les exceptions, la généricité, le clonage et la sérialisation. Exo A : Méthodes génériques Écrire une méthode générique qui additionne les nombres d'une

Plus en détail

rjava : utilisation parallèle et communication entre deux langages informatiques Julien Troudet

rjava : utilisation parallèle et communication entre deux langages informatiques Julien Troudet rjava : utilisation parallèle et communication entre deux langages informatiques Julien Troudet Pourquoi utiliser rjava (ou JRI)? rjava (Appel de Java dans un script R) Utilisation des Interfaces Homme/Machine

Plus en détail

Exercices INF5171 : série #4 (Automne 2012)

Exercices INF5171 : série #4 (Automne 2012) Exercices INF5171 : série #4 (Automne 2012) 1. Opération collective de réduction (moniteur pseudo-mpd) Programme MPD 1 Un moniteur avec une opération de réduction (somme). monitor Reduction op somme( int

Plus en détail

Année 2008-2009. Les threads Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.

Année 2008-2009. Les threads Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed. Année 2008-2009 Les threads Java Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Présentation du problème Revenons quelques instants à nos animaux.

Plus en détail

Communications et synchronisations

Communications et synchronisations Communications et synchronisations Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Le problème des philosophes (Dijkstra

Plus en détail

Exercices dirigés n 4 - corrigé

Exercices dirigés n 4 - corrigé Exercices dirigés n 4 - corrigé Résultat de l'exécution du programme suivant : public class ED4 { private int x = 0; private static int y = 0; public ED4(int x,int y){ this.x = x; this.y = y; void println(

Plus en détail

Les moniteurs. Extrait du cours CNAM-ACCOV Samia Bouzefrane. Maître de Conférences CEDRIC CNAM

Les moniteurs. Extrait du cours CNAM-ACCOV Samia Bouzefrane. Maître de Conférences CEDRIC CNAM Les moniteurs Extrait du cours CNAM-ACCOV Samia Bouzefrane Maître de Conférences CEDRIC CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra NFP137 C14 1 Bilan du contrôle de concurrence par sémaphores

Plus en détail

Programmation Java - bases

Programmation Java - bases Programmation Java - bases Programmation objet avec Java (2) Christelle Urtado & Sylvain Vauttier Janvier 2013 Surdéfinition et Dans un constructeur, pour appeler un autre constructeur de la même classe,

Plus en détail

Les tâches et la synchronisation en langage Java

Les tâches et la synchronisation en langage Java Les tâches et la synchronisation en langage Java Les threads, les verrous, les sémaphores et les moniteurs en Java D après les cours de D. Genthial et B. Caylux Langage Java Threads et synchronisation

Plus en détail

Contrôle nal de Compléments en Programmation Orientée Objet (Correction)

Contrôle nal de Compléments en Programmation Orientée Objet (Correction) Contrôle nal de Compléments en Programmation Orientée Objet (Correction) 6 janvier 2017 8h30 Durée : 2 heures Épreuve sans document autorisé, à l'exception d'une feuille A4 manuscrite recto-verso. Le barème

Plus en détail

Threads et programmation concurrente. concurrente. Plan du cours. INF Programmation II Hiver 2007 Dr Y.Sami INF1573. Introduction Qu est

Threads et programmation concurrente. concurrente. Plan du cours. INF Programmation II Hiver 2007 Dr Y.Sami INF1573. Introduction Qu est Threads et programmation concurrente - Programmation II Hiver 2007 Dr Y.Sami Threads et programmation concurrente Objectifs: - Comprendre le concept de thread. - Savoir comment concevoir et écrire des

Plus en détail

PROGRAMMATION RÉSEAU. Arnaud Sangnier La concurrence en Java

PROGRAMMATION RÉSEAU. Arnaud Sangnier La concurrence en Java PROGRAMMATION RÉSEAU Arnaud Sangnier sangnier@irif.fr La concurrence en Java Plusieurs connexions sur un serveur En général, on veut qu'un serveur accepte plusieurs connexions en même temps Prenons l'exemple

Plus en détail

Not Another Completely Heuristic Operating System Première étape: améliorer le système de threads

Not Another Completely Heuristic Operating System Première étape: améliorer le système de threads Not Another Completely Heuristic Operating System Première étape: améliorer le système de threads KASTTET Ahmed MIMET Mohamed ROUAK Sidi Mohammed SALIM Eliass Sommaire I. Introduction... 3 II. Locks et

Plus en détail

Master Compétence Complémentaire en Informatique Programmation Orientée Objets Gestion de comptes en banque

Master Compétence Complémentaire en Informatique Programmation Orientée Objets Gestion de comptes en banque Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Master Compétence Complémentaire en Informatique Programmation Orientée Objets Gestion de

Plus en détail

Correction du devoir 2

Correction du devoir 2 Correction du devoir 2 1 Connaissance de Java Pour chaque élément cité, n oublier pas de donner des précisions (voir cours p.ex.). 1.1 Différents types d applications que l on peut réaliser en Java Ce

Plus en détail

1 Programmation d une montre digitale

1 Programmation d une montre digitale TP 1 : Introduction à la programmation graphique en Java 1 er février 2017 1 Programmation d une montre digitale On voudrais développer une class abstraite Montre qui implante une montre digitale. La classe

Plus en détail

Introduction à Java. Cours 3: Programmation Orientée Objet en Java. Stéphane Airiau. Université Paris-Dauphine

Introduction à Java. Cours 3: Programmation Orientée Objet en Java. Stéphane Airiau. Université Paris-Dauphine Introduction à Java Cours 3: Programmation Orientée Objet en Java Stéphane Airiau Université Paris-Dauphine Cours 3: Programmation Orientée Objet en Java (Stéphane Airiau) Java 1 But : ne pas coder la

Plus en détail

Programmation parallèle et concurrente : le multi-threading

Programmation parallèle et concurrente : le multi-threading Programmation parallèle et concurrente : le multi-threading 1 Parallélisme et concurrence On dit que deux processus s'exécutent en parallèle lorsqu'ils s'exécutent sur des CPU différents. Ils sont concurrents

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Programmation Concurrente, Réactive et Répartie

Programmation Concurrente, Réactive et Répartie Programmation Concurrente, Réactive et Répartie Cours N 3 Emmanuel Chailloux Master d Informatique Université Pierre et Marie Curie année 2012-2013 Cours 3 - Programmation Concurrente, Réactive et Répartie

Plus en détail

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net Rappels Inf 431 Cours 11 un processus t (Thread) est un programme qui s exécute Synchronisation par mémoire partagée tstart lance l exécution concurrente de la méthode trun de t tinterrupt signale qu on

Plus en détail

Fiches JAVA. 1 Classes et objets. 2 Création et utilisation d un objet

Fiches JAVA. 1 Classes et objets. 2 Création et utilisation d un objet 1 Classes et objets Fiches JAVA Les éléments de base en java sont des objets. On peut avoir différents types d objets en Java. Le type d un objet est appelé sa classe. Chaque fichier java décrit une classe.

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

Plus en détail

Les tâches et la synchronisation en langage Java

Les tâches et la synchronisation en langage Java Les tâches et la synchronisation en langage Java Les threads, les verrous, les sémaphores et les moniteurs en Java D après les cours de D. Genthial et B. Caylux Langage Java Threads et synchronisation

Plus en détail

Programmation système : multiprogrammation (1 partie) Processus et Thread

Programmation système : multiprogrammation (1 partie) Processus et Thread Programmation système : multiprogrammation (1 partie) Processus et Thread Thierry Vaira BTS IRIS Avignon «v0.1 21 janvier 2015 Sommaire 1 Introduction 2 Les processus lourds et légers 3 Interface de programmation

Plus en détail

NFP121 janvier de l'an 8. MultiThreading. Thread versus Processus. Processus

NFP121 janvier de l'an 8. MultiThreading. Thread versus Processus. Processus janvier de l'an 8 MultiThreading Thread versus Processus Processus simple Code Data File Processus Multithreadé Code Data File Registers Stack Registers Stack Registers Stack Processus possède un espace

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 2: Programmation Orientée Objet en Java Stéphane Airiau Université Paris-Dauphine Cours 2: Programmation Orientée Objet en Java (Stéphane Airiau) Java 1 But : ne pas coder la

Plus en détail

1 Le Parking revisité

1 Le Parking revisité Module I6 - Manipulation de threads II 13 décembre 2012 1 Le Parking revisité Une société de gestion de parkings de voitures souhaite mettre en place un système automatique d affichage en temps réel de

Plus en détail

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

Observer/Observable. F. Mallet /2012 F. Mallet - Miage M1 6-1

Observer/Observable. F. Mallet /2012 F. Mallet - Miage M1 6-1 Patrons de comportement: Observer/Observable F. Mallet miage.m1@gmail.com http://deptinfo.unice.fr/~fmallet/ 2011/2012 F. Mallet - Miage M1 6-1 Motivation Les besoins pour une bonne conception et du bon

Plus en détail

LE MULTITHREADING EN PYTHON

LE MULTITHREADING EN PYTHON LE MULTITHREADING EN PYTHON INFORMATIQUE SÉQUENTIELLE Grande majorité des ordinateurs (John von Neumann depuis 60 ans) 1 processeur = 1 instruction à la fois Langage de programmation = blocs d instructions

Plus en détail

Variables et fonctions statiques

Variables et fonctions statiques Variables et fonctions statiques Mot clef «static» Tout élément statique est déclaré en C/C++ à l aide du mot clef «static» Le sens du mot-clef «static» diffère selon le type d'élément auquel il est associé

Plus en détail

Chapitre 3 Gestion des threads. Support du cours :

Chapitre 3 Gestion des threads. Support du cours : Chapitre 3 Gestion des threads Support du cours : www.achrafothman.net 1 Threads Vue d Ensemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads Java 2

Plus en détail

Encore des comptes... Parallélisme. public class Compte { private int valeur; Eric Goubault Commissariat à l Energie Atomique Saclay

Encore des comptes... Parallélisme. public class Compte { private int valeur; Eric Goubault Commissariat à l Energie Atomique Saclay Parallélisme Encore des comptes... Eric Goubault Commissariat à l Energie Atomique Saclay public class Compte { private int valeur; Compte(int val) { valeur = val; 1 public int solde() { return valeur;

Plus en détail

Exceptions. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1. Exceptions

Exceptions. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1. Exceptions Exceptions Programmation Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Université Lille 1 - Licence mention Informatique Programmation Orientée Objet 1 Principe

Plus en détail

Java Licence Professionnelle CISII,

Java Licence Professionnelle CISII, Java Licence Professionnelle CISII, 2009-10 Cours 3 : Autres types de données (c) http://www.loria.fr/~tabbone/cours.html 1 Les constantes - Contiennent une valeur fixe et sont caractérisées par un identificateur

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Gestion des threads Gestion des timers Gestion des threads Gestion des timers Programmation - Threads - Nicolas Malandain 1 Gestion des threads Principe Création Cycle Synchronisation Collections May 1,

Plus en détail

Parallélisme en Java. Patrice Torguet

Parallélisme en Java. Patrice Torguet Parallélisme en Java Patrice Torguet Plan Introduction Notion de processus Notion de thread Créations de threads Synchronisation entre threads wait et notify Les différents états d un thread Difficultés

Plus en détail

École Polytechnique de Montréal. Département de Génie Informatique et de Génie Logiciel. Cours INF2610. Examen final. Automne 2010

École Polytechnique de Montréal. Département de Génie Informatique et de Génie Logiciel. Cours INF2610. Examen final. Automne 2010 INF60 Examen final Automne 00 École olytechnique de Montréal Département de Génie Informatique et de Génie Logiciel Cours INF60 Examen final Automne 00 Date : 6 décembre 00 de 9h0 à h00 ondération : 40

Plus en détail

Cours 4. - Créer des animations : la classe Thread et l'interface Runnable - Quelques composants supplémentaires : le choix dans une liste

Cours 4. - Créer des animations : la classe Thread et l'interface Runnable - Quelques composants supplémentaires : le choix dans une liste Cours 4 - Créer des animations : la classe Thread et l'interface Runnable - Quelques composants supplémentaires : le choix dans une liste JComboBox et JList F. Gayral 1 Rappel : multi-tâches multi-tâches

Plus en détail

La programmation concurrente

La programmation concurrente La programmation concurrente page : 1 Introduction Dans de nombreux contextes, il est intéressant d'effectuer plusieurs traitements distincts en même temps Application réseau En même temps ne signifie

Plus en détail

Synchronisation de processus Partie 2 : Les moniteurs

Synchronisation de processus Partie 2 : Les moniteurs Synchronisation de processus Partie 2 : Les moniteurs Qu est ce qu un moniteur? Variables de condition des moniteurs Exemple : Problème Producteur/consommateur Implémentation des moniteurs (au moyen de

Plus en détail

Les threads Les threads : introduction

Les threads Les threads : introduction Les threads : introduction 195 Plan Présentation Historique Définitions Implantations Apports Problèmes Ordonnancement Synchronisation Verrous Variables conditionnelles Sémaphores Threads Java 196 Plan

Plus en détail

LOG4430 : Architecture et conception avancée

LOG4430 : Architecture et conception avancée LOG4430 : Architecture et conception avancée Yann-Gaël Guéhéneuc Patrons pour la conception d applications distribuées Département de génie informatique et de génie logiciel École Polytechnique de Montréal

Plus en détail

Introduction à Java. Cours 3: Programmation Orientée Objet en Java. Stéphane Airiau. Université Paris-Dauphine

Introduction à Java. Cours 3: Programmation Orientée Objet en Java. Stéphane Airiau. Université Paris-Dauphine Introduction à Java Cours 3: Programmation Orientée Objet en Java Stéphane Airiau Université Paris-Dauphine Cours 3: Programmation Orientée Objet en Java (Stéphane Airiau) Java 1 But : ne pas coder la

Plus en détail

Systèmes D Exploitation II - 2 ème année Licence Travaux Dirigés III ESEN - Université de la Manouba Amine DHRAIEF

Systèmes D Exploitation II - 2 ème année Licence Travaux Dirigés III ESEN - Université de la Manouba Amine DHRAIEF Systèmes D Exploitation II - 2 ème année Licence Travaux Dirigés III ESEN - Université de la Manouba Amine DHRAIEF 1. Pourquoi le partage de ressources pose des problèmes dans un système multi-programmé

Plus en détail

Compléments sur le langage Java

Compléments sur le langage Java Plan de cette partie Compléments sur le langage Java Université de Nice - Sophia Antipolis Version 3.4.4 16/2/10 Richard Grin Classes internes, initialiseurs non static Clonage Finalize ShutdownHook R.

Plus en détail

partie en parallèle : Programmation système et réseau du point de vue «Multiprocessus Plan

partie en parallèle : Programmation système et réseau du point de vue «Multiprocessus Plan 2 ème LST Info&Miage partie en parallèle : Programmation système et réseau du point de vue «Multi» Plan 2. Mise en oeuvre : Portable s p Chapitre 1 : Introduction à la Concurrence entre & Exclusion Mutuelle

Plus en détail

L héritage : principe

L héritage : principe L héritage Principe class Pixel { private int x ; private int y ; public Pixel( int x, int y ) { // public void affiche() { // L héritage : principe L héritage permet de créer facilement des nouvelles

Plus en détail

IFT1020 INTRA - Solutionnaire

IFT1020 INTRA - Solutionnaire IFT1020 - Session Été, Intra Mohamed Lokbani IFT1020 INTRA - Solutionnaire Inscrivez tout de suite votre nom et code permanent. Nom: Prénom(s): Signature: Code perm: Date : 14 juin 2005 Durée: 2 heures

Plus en détail

Sémaphores Appliquettes

Sémaphores Appliquettes Inf 431 Cours 12 Sémaphores Appliquettes jeanjacqueslevy.net secrétariat de l enseignement: Catherine Bensoussan cb@lix.polytechnique.fr Aile 00, LIX, 01 69 33 34 67 www.enseignement.polytechnique.fr/informatique/if

Plus en détail

Gestion des exceptions

Gestion des exceptions Notes de cours Programmation I INF1120 Version 1.1 30 novembre 2015 UQAM Table des matières 1. INTRODUCTION 3 2. LES EXCEPTIONS STANDARDS 4 3. GESTION D EXCEPTIONS 5 3.1 GESTION DES EXCEPTIONS IMPLICITES

Plus en détail

4.1 Les exceptions standards

4.1 Les exceptions standards Chapitre 4 : La gestion des exceptions 4.1 Les exceptions standards De nombreuses fonctions C# sont susceptibles de générer des exceptions, c'est à dire des erreurs. Lorsqu'une fonction est susceptible

Plus en détail

Question 2 (5 pts) : Synchronisation (compteurs d événements)

Question 2 (5 pts) : Synchronisation (compteurs d événements) Automne 2005 Page 1 sur 7 INF3600 Attention : Toute réponse non argumentée vaut 0 pts. Question 1 (2 pts ) : Généralités Répondez, en 5 lignes maximum à chacune des questions suivantes : 1. Dans un système

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

PARADIGME ORIENTÉ OBJET - PART 2

PARADIGME ORIENTÉ OBJET - PART 2 PARADIGME ORIENTÉ OBJET - PART 2 A programming paradigm that uses objects to design systems. Sébastien Adam Les concepts avancés de la programmation orientée-objet 2 Plan Héritage en Java Modificateur

Plus en détail

TP Multitâche n 2 : Programmation concurrente

TP Multitâche n 2 : Programmation concurrente TP Multitâche n 2 : Programmation concurrente 2013-2016 tv - v.1.0 Sommaire Programmation concurrente 2 Synchronisation de données 2 Séquence n 1 : le problème de synchronisation de données

Plus en détail

Introduction à Java. Cours 5: Gestion des exceptions. Stéphane Airiau. Université Paris-Dauphine

Introduction à Java. Cours 5: Gestion des exceptions. Stéphane Airiau. Université Paris-Dauphine Introduction à Java Cours 5: Gestion des exceptions Stéphane Airiau Université Paris-Dauphine Cours 5: Gestion des exceptions (Stéphane Airiau) Java 1 Gestion des Exceptions Gérer l inattendu! Cours 5:

Plus en détail

(1,5 points) d) Quel est le rôle d un rmiregistry? (1 point) i=1

(1,5 points) d) Quel est le rôle d un rmiregistry? (1 point) i=1 Université de Provence MASTER INFORMATIQUE Programmation Parallèle et Distribuée 2010-2011 Programmation Parallèle et Distribuée Partiel jeudi 10 mars 2011 2h00 Aucun document autorisé. Les réponses doivent

Plus en détail

Programmation OO en Scheme

Programmation OO en Scheme Programmation OO en Scheme Comment encapsuler la pile avec les procédures empiler! et depiler!? La variable PILE ne peut pas être une variable locale dans la fermeture d aucune procédure. Solution : messages

Plus en détail

Moniteurs C/POSIX C15 NFP137 1

Moniteurs C/POSIX C15 NFP137 1 Moniteurs C/POSIX C15 NFP137 1 Synchronisation à l aide des Moniteurs Posix Samia Bouzefrane Maître de Conférences CEDRIC CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra C15 NFP137 2 Mécanismes

Plus en détail

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1 Polymorphisme Programmation Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Université Lille 1 - Licence mention Informatique Programmation Orientée Objet 1 polymorphisme

Plus en détail

M2-GamaGora. Programmation Multi-Thread - partie 1. J.C. Iehl. November 13, 2008

M2-GamaGora. Programmation Multi-Thread - partie 1. J.C. Iehl. November 13, 2008 Programmation Multi-Thread - partie 1 November 13, 2008 pourquoi ça ne marche pas? et alors? introduction aux threads threads : pourquoi ça ne marche pas? et alors? un nouveau point d entrée (une fonction

Plus en détail

LIF12-Systèmes d Exploitation. Exemple. Pourquoi? Léger et lourd? Thread/processus. Modèles - II. Processus. Processus. Thread

LIF12-Systèmes d Exploitation. Exemple. Pourquoi? Léger et lourd? Thread/processus. Modèles - II. Processus. Processus. Thread LIF12-Systèmes d Exploitation Processus légers J.C. Iehl/J.Bonneville/F. Rico séance 3 J.C. Iehl/J.Bonneville/F. Rico LIF12-1/48 J.C. Iehl/J.Bonneville/F. Rico LIF12-2/48 Pourquoi? Processus Permet de

Plus en détail

Rétro-ingéniérie. Jean-Yves Didier

Rétro-ingéniérie. Jean-Yves Didier Rétro-ingéniérie Jean-Yves Didier L objectif de ce TD est de construire une représentation graphique permettant d avoir une vue synthétique du code source d un logiciel. Il s agit donc de faire de la rétro-ingénierie

Plus en détail