Introduction : les processus. Introduction : les threads. Plan

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

Download "Introduction : les processus. Introduction : les threads. Plan"

Transcription

1 IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres ressources (sockets, fichiers, etc). Les systèmes d exploitation actuels permettent d exécuter «en même temps» plusieurs processus et de les ordonnancer. Christophe Garion ISAE/DMIA - SUPAERO/IN 10 avenue Édouard Belin Toulouse Cedex 4 OS Proc. 1 Local mem. Proc. 2 Local mem. Proc. 3 Local mem. Christophe Garion IN Threads 1/ 49 Introduction : les threads Thread est une abréviation de thread of control : fil de contrôle. On parle aussi de processus léger. Un thread est exécuté dans un processus. Il partage un espace mémoire avec les autres threads du processus. Les processus partagent rarement un espace mémoire. Ils ont une pile, un espace d adressage propres. Plan 1 Présentation des threads OS Proc. 1 Local mem. JVM Local mem. Proc. 2 Thread 1 Thread 2 Local mem. Local var. Local var. 2 Communication entre threads Synchronisation, verrous et interblocage La classe BusyFlag Interaction entre threads 3 Collections et java.util.concurrent Applications : entrées/sorties non bloquantes, multi-processeurs, timer, alarme, algorithmes parallélisables etc. Christophe Garion IN Threads 4/ 49

2 Threads en Java : un exemple Animation d un composant graphique : import javax.swing.*; public class TimerThread extends Thread { JComponent comp; int timediff; boolean shouldrun; // le composant a redessiner // le temps entre chaque rafraichissement // mettre a false pour arreter le thread public TimerThread(JComponent comp_, int timediff_) { comp = comp_; timediff = timediff_; shouldrun = true; public void run() { while(shouldrun) { comp.repaint(); sleep(timediff); catch(interruptedexception e) { e.printstacktrace(); Utilisation de l interface Runnable On peut également utiliser l interface Runnable : public interface Runnable { public void run(); Dans ce cas, on peut créer un thread en utilisant le constructeur Thread(Runnable r) : Thread t = new Thread(runnable); t.start(); Avantages : évite d utiliser une relation d héritage ; permet de manipuler directement des attributs en écrivant la méthode run directement dans une classe «intéressante». Inconvénient : complexité accrue des classes. Christophe Garion IN Threads 8/ 49 API des threads en Java Principe On étend la classe Thread qui est la classe de «base». Des méthodes : run() décrit le flot d exécution du thread. On peut la comparer à la méthode main du programme principal ; sleep(long milliseconds) permet de mettre en sommeil le thread courant pendant une durée de milliseconds ms. Exemple : Thread.currentThread().sleep(5000); Exemple d utilisation du thread précédent : TimerThread timer = new TimerThread(comp, 50); timer.start(); start lance le thread en appelant sa méthode run. La méthode start retourne immédiatement. Le thread s exécute donc en parallèle ; l arrêt du thread est provoqué par le passage de shouldrun à false. Le thread a alors fini sa méthode run. Christophe Garion IN Threads 7/ 49 Le cycle de vie d un thread start() NEW RUNNABLE WAITING fin de run() travaille TERMINATED TIMED WAITING BLOCKED Le thread est WAITING lors d un appel à wait ou join (ou TIMED_WAITING pour sleep ou versions temporisées de wait et join). Le thread est BLOCKED en attente de verrou. À partir de la version 5.0 de Java, on dispose de la méthode getstate() permettant de trouver l état d un thread. Christophe Garion IN Threads 9/ 49

3 Communication basique entre threads La méthode public boolean isalive() permet de savoir si un thread est encore en vie. Communication basique entre threads La méthode join() (et ses variantes) sur un thread permet d «attendre» qu un thread se finisse : état démarré isalive() public class Calcul implements Runnable { public void run() {... //gros calcul non démarré temps public class MiseEnFormeResultat { public static void main(string[] arg) { Thread t = new Thread(new Calcul()); t.start(); t.join(); afficherresultats(); Christophe Garion IN Threads 12/ 49 Synchronisation Le principal problème du partage de données entre threads est que plusieurs threads peuvent tenter d accéder aux même données en même temps. Exemple classique (voir cours bases de données) : une femme et son mari possèdent un compte commun. Ils retirent de l argent en même temps : 1 le mari demande un retrait ; 2 ce retrait est autorisé (montant disponible sur le compte) ; 3 la femme demande un retrait ; 4 ce retrait est autorisé (montant disponible sur le compte) ; 5 le retrait du mari est pris en compte et il reçoit l argent ; 6 le retrait de la femme est pris en compte et elle reçoit l argent ; 7 la somme des montants des deux retraits n était pas autorisée. Christophe Garion IN Threads 13/ 49 Quelles opérations sont sûres en Java? Principe (atomicité) L affectation d une variable de type autre que double ou long est atomique. Par contre, les threads en Java peuvent partager des valeurs et en posséder une copie locale (cf. spécification du langage). On n est donc pas garanti que la valeur d une variable lue depuis un thread a pris en compte les changements effectués par un autre... On peut utiliser le mot-clé volatile pour préciser qu un attribut d une classe doit être «synchronisé» à chaque modification. Christophe Garion IN Threads 14/ 49 Christophe Garion IN Threads 15/ 49

4 Synchronisation : section critique Dans l exemple précédent, on va dire que la méthode retirer est une section critique (on parle aussi de race condition). Définition (section critique) Une section critique est une portion de code ne pouvant pas être exécutée simultanément par deux threads. Pour pallier ce problème, on peut utiliser différentes primitives de programmation concurrente : mutex sémaphore... Synchronisation : monitor Nous allons nous intéresser ici aux verrous mutex. Principe (verrou mutex) Un seul thread à la fois peut acquérir un verrou mutex. En Java, un verrou mutex est créé pour chaque objet du système (on l appelle également monitor). Le mot clé synchronized permet de spécifier qu une méthode ou un bloc de code nécessite l acquisition du verrou de l objet sur lequel on appelle la méthode. public class Compte { private float montant; public synchronized void debiter(float montant_) { // et hop on enleve de l argent Christophe Garion IN Threads 16/ 49 Synchronisation : acquisition et relâche du verrou public class Compte { private float montant; public synchronized void debiter(float montant_) { // et hop on enleve de l argent Christophe Garion IN Threads 17/ 49 Imbrication des verrous Remarque Il n y a pas de problème de verrous imbriqués. Si un thread possède un verrou sur un objet, alors l appel à une méthode synchronized de cet objet dans une méthode synchronized de ce même objet se déroule sans problème. Principe (acquisition/relâche des verrous) si un thread veut exécuter la méthode debiter, il doit obtenir le verrou de l objet de type Compte qu il manipule. lorsqu il l a, il exécute debiter. quand il a finit l exécution de debiter, il relâche le verrou sur l instance de Compte. Christophe Garion IN Threads 18/ 49 Christophe Garion IN Threads 19/ 49

5 Un exemple d utilisation des threads pour les I/O Les entrées/sorties sont souvent bloquantes. Voici un exemple d utilisation avec la lecture sur une socket (récupération et traitement de données par exemple) : import java.io.*; import java.net.*; public class AsyncReadSocket extends Thread { private Socket s; private StringBuffer result; public AsyncReadSocket(Socket s) { this.s = s; result = new StringBuffer(); Christophe Garion IN Threads 20/ 49 Interblocage Le fait de poser des verrous sur des objets peut amener des situations d interblocage (ou deadlock). Définition (interblocage) Un interblocage est une situation dans laquelle deux threads s attendent mutuellement pour obtenir une ressource. Exemple : le thread t1 possède le verrou sur l objet o1 ; le thread t2 possède le verrou sur l objet o2 ; pour continuer (et donc pour pouvoir libérer le verrou sur o1), t1 cherche à obtenir le verrou sur o2 ; de la même façon, t2 cherche à obtenir le verrou sur o1 ; les deux threads sont dans l état BLOCKED... Un exemple d utilisation des threads pour les I/O public void run() { DataInputStream is = null; is = new DataInputStream(s.getInputStream()); catch (Exception e) { // end of try-catch while (true) { char c = is.readchar(); appendresult(c); catch (Exception e) { // end of try-catch // end of while (true) public synchronized void appendresult(char c) { result.append(c); public synchronized String getresult() { String retval = result.tostring(); result = new StringBuffer(); return retval; Portée de synchronized : un exemple Considérons la classe suivante : public class C { Object ressource1; Object ressource2; public synchronized void m1() { // utilisation de ressource1 // mais pas de ressource2 public synchronized void m2() { // utilisation de ressource2 // mais pas de ressource1 Le problème de l interblocage provient souvent d une portée trop longue du synchronized (problème de la granularité dans les bases de données). Christophe Garion IN Threads 22/ 49 Christophe Garion IN Threads 23/ 49

6 Portée de synchronized : un exemple On aimerait que : 1 deux threads ne puissent pas appeler m1 en même temps sur le même objet ; 2 deux threads ne puissent pas appeler m2 en même temps sur le même objet ; 3 m1 et m2 puissent être appelées en même temps sur le même objet. L utilisation de synchronized permet de garantir les deux contraintes 1 et 2, mais pas 3... Portée de synchronized : bloc On peut utiliser synchronized non pas sur une méthode, mais sur un bloc de code en précisant l objet sur lequel on veut obtenir le verrou : public class C { Object ressource1; Object ressource2; public void m1() { synchronized(ressource1) { // utilisation de ressource1 // mais pas de ressource2 public void m2() { synchronized(ressource2) { // utilisation de ressource2 // mais pas de ressource1 Christophe Garion IN Threads 24/ 49 Encore des comptes bancaires... Supposons que nous ayons les classe suivantes représentant un compte et un distributeur de billets : public class Compte { private double solde; public synchronized boolean debiter(double m) { if (m > solde) { solde -= m; return true; return false; public synchronized double getsolde() { return solde; Christophe Garion IN Threads 25/ 49 Encore des comptes bancaires... public class ATM { private Compte c; public synchronized void login(compte c_) throws Exception { if (c!= null) { throw new Exception("Already logged in!"); c = c_; public synchronized void retirer(double m) { if (c.debiter(m)) { System.out.println("Voici vos " + m + " euros"); System.out.println("Retrait non autorise!"); public synchronized void balance() { System.out.println("Solde : " + c.getsolde()); Christophe Garion IN Threads 27/ 49 public synchronized void logoff() { c = null;

7 Distributeur de billets : problème On a utilisé des méthodes synchronized : Mais : deux threads ne peuvent pas débiter un compte et consulter son montant en même temps deux threads ne peuvent pas utiliser le même distributeur en même temps un thread mari se connecte à un distributeur et regarde le solde de son compte joint (300 ) ; un thread epouse se connecte à un autre distributeur et retire 200 sur le compte joint ; mari essaye de retirer 150 : c est refusé! Verrouiller le compte sur la session? Il faudrait pouvoir bloquer le compte durant toute la durée de la session sur le distributeur (et donc sur plusieurs méthodes). Nous allons construire une classe permettant de signifier qu un thread utilise une ressource. Cette classe possédera : un attribut identifiant le thread utilisant la ressource ; une méthode permettant à un thread de verrouiller la ressource. Si un thread n obtient pas la ressource, il essayera d obtenir la ressource jusqu à son obtention ; une méthode permettant au thread possédant la ressource de la libérer. Christophe Garion IN Threads 29/ 49 La classe BusyFlagDeadlock Christophe Garion IN Threads 30/ 49 Retour sur l exemple avec BusyFlagDeadlock public class BusyFlagDeadlock { public class CompteBusyFlagDeadlock { private Thread busyflag; public synchronized void getflag() { while(true) { if (busyflag == null) { busyflag = Thread.currentThread(); break; Thread.sleep(100); catch (Exception e) { public synchronized void libereflag() { if (busyflag == Thread.currentThread()) { busyflag = null; private double solde; private BusyFlagDeadlock bf = new BusyFlagDeadlock(); public synchronized boolean debiter(double m) { if (m < solde) { solde -= m; return true; return false; public synchronized double getsolde() { return solde; public synchronized void getflag() { bf.getflag(); public synchronized void libereflag() { bf.libereflag(); Christophe Garion IN Threads 31/ 49 Christophe Garion IN Threads 32/ 49

8 Retour sur l exemple avec BusyFlagDeadlock public class ATMBusyFlagDeadlock { private CompteBusyFlagDeadlock c; public synchronized void login(comptebusyflagdeadlock c_) throws Exception { if (c!= null) { throw new Exception("Already logged in!"); c.getflag(); c = c_; Interblocage? Avec la classe précédente, il y a quand même possibilité d interblocage : 1 mari appelle getflag(), obtient le verrou sur l objet BusyFlagDeadLock, l attribut busyflag change de valeur et mari libère le verrou ; 2 epouse appelle getflag(), obtient le verrou sur l objet BusyFlagDeadlock ; 3 comme busyflag n est pas null, t2 «reste» dans la boucle et conserve le verrou ; 4 mari appelle libereflag(), mais n obtient pas le verrou. public synchronized void logoff() { c.libereflag(); c = null; Il faut alors restreindre la portée de synchronized : ce sont juste les accès à busyflag qui nous intéressent. Christophe Garion IN Threads 33/ 49 Nouvelle version de BusyFlag public class BusyFlag { private Thread busyflag; public void getflag() { while(true) { synchronized (this) { if (busyflag == null) { busyflag = Thread.currentThread(); break; Thread.sleep(100); catch (Exception e) { public synchronized void libereflag() { if (busyflag == Thread.currentThread()) { busyflag = null; Christophe Garion IN Threads 34/ 49 Interblocage : problèmes sans solution? Donc on peut toujours s en sortir? Non : public void removeuseless(file file) { synchronized (file) { if (file.isuseless()) { Directory directory = file.getdirectory(); synchronized (directory) { directory.remove(file); public void updatefolders(directory dir) { synchronized (dir) { for (File f = dir.first(); f!= null; f.next()) { synchronized(f) { f.update(); Christophe Garion IN Threads 35/ 49 Christophe Garion IN Threads 36/ 49

9 Interblocage 1 un thread t1 appelle updatefolder et verrouille le dossier L1 ; 2 un thread t2 appelle removeuseless et verrouille le fichier F2 du dossier L1. Cette méthode détermine que F2 est inutile. Elle va donc chercher à obtenir le verrou sur L1 ; 3 dans le même temps, t1 va chercher à obtenir le verrou sur F2... Remarque Ces problèmes dépendent en plus de l OS, de la machine virtuelle etc. Solution On impose une hiérarchie «artificielle» de verrous : lors de l imbrication de synchronized, on choisira toujours le mutex d un même objet en premier. Christophe Garion IN Threads 37/ 49 Interaction entre threads : exemple du BusyFlag L instruction sleep(100) est problématique (perte de performances). Il faudrait pouvoir prévenir un thread en attente qu un événement se produit (par exemple que le BusyFlag vient d être libéré). L idée est donc la suivante : un thread peut avoir besoin qu une certaine condition soit réalisée pour continuer le traitement qu il doit effectuer. Cette condition peut être relâchée par un autre thread qui doit alors prévenir le premier. Il faut donc deux mécanismes : un mécanisme pour mettre en attente proprement un thread par rapport à une certaine condition ; un mécanisme pour prévenir un ou plusieurs threads en attente qu une condition est vérifiée. Cela rappelle fortement le pattern Observateur. Interaction entre threads : exemple du BusyFlag Reprenons l exemple du BusyFlag : public class BusyFlag { private Thread busyflag; public void getflag() { while(true) { synchronized (this) { if (busyflag == null) { busyflag = Thread.currentThread(); break; Thread.sleep(100); catch (Exception e) { public synchronized void libereflag() { if (busyflag == Thread.currentThread()) { busyflag = null; Les méthodes wait, notify et notifyall Pour réaliser tout cela, on dispose de trois méthodes disponibles sur toute instance de Object : void wait() : permet d attendre une condition. Elle doit être utilisée à l intérieur d un bloc ou d une méthode synchronized. Un thread qui appelle cette méthode doit posséder le verrou sur l objet en question (attention aux blocs synchronized!). Il passe alors en mode «dormant» et relâche le verrou. void notify() : notifie un thread en attente d une condition de la réalisation de cette condition. Elle doit être utilisée à l intérieur d un bloc ou d une méthode synchronized. Le thread doit avoir le verrou sur l objet. On ne choisit pas quel thread va être notifié (non précisé par la spécification de Java). void notifyall() : notifie tous les threads en attente sur un objet de l arrivée de la condition. Elle doit être utilisée à l intérieur d un bloc ou d une méthode synchronized. Christophe Garion IN Threads 40/ 49 Christophe Garion IN Threads 41/ 49

10 La classe BusyFlagWait public class BusyFlagWait { private Thread busyflag; public synchronized void getflag() { while(busyflag!= null) { wait(); catch (Exception e) { busyflag = Thread.currentThread(); Précisions sur la méthode wait lors de l entrée dans la méthode wait(), le verrou sur l objet synchronisé est relâché ; le verrou est repris juste avant la fin de la méthode wait ; la méthode wait est surchargée : void wait(long timeout). La méthode retourne après une durée de timeout millisecondes, même si aucune notification ne s est produite ; la différence fondamentale avec la méthode sleep est que le verrou est libéré dans le cas de l utilisation de wait ; il faut toujours placer la méthode wait dans une boucle infinie testant la condition de notification. public synchronized void libereflag() { if (busyflag == Thread.currentThread()) { busyflag = null; notify(); Christophe Garion IN Threads 42/ 49 Exemple avec BusyFlagWait 1 t1 appelle getflag(), obtient le verrou sur l objet BusyFlagWait, l attribut busyflag change de valeur et t1 libère le verrou ; 2 t2 appelle getflag(), obtient le verrou sur l objet BusyFlagWait ; 3 comme busyflag n est pas null, t2 exécute la méthode wait sur l objet dont il possède le verrou (ici l objet BusyFlagWait), passe en mode «dormant» et libère le verrou ; 4 t1 appelle libereflag(), obtient le verrou, l attribut busyflag passe à null ; 5 t1 appelle notify sur l objet BusyFlagWait dont il possède le verrou ; 6 t2 est prévenu. Il attend de pouvoir obtenir le verrou sur l objet ; 7 t1 libère le verrou en sortant de la méthode, t2 le récupère et revient au début de la boucle while ; 8 la valeur de busyflag est modifiée et t2 libère le verrou. Christophe Garion IN Threads 43/ 49 Interruption des threads Les méthodes wait, sleep et join peuvent lever une InterruptedException. Cette exception est levée lorsqu un thread appelle la méthode void interrupt() sur un autre thread : si le thread est bloqué dans une méthode comme wait, sleep ou join, alors ces méthodes lèvent une InterruptedException ; sinon un indicateur est positionné et le thread peut l examiner via la méthode static boolean interrupted() ou la méthode boolean isinterrupted(). On ne peut pas interrompre un thread qui est bloqué en attente d entrées/sorties (sauf sous certaines implantations comme les threads natifs sous Solaris). Christophe Garion IN Threads 44/ 49 Christophe Garion IN Threads 45/ 49

11 Les collections en Java Les collections en Java ne sont pas thread safe : on ne peut pas y accéder en même temps (même via des itérateurs). Il existe toutefois deux (anciennes) collections synchronisées : Vector Hashtable On peut toutefois obtenir une collection «synchronisée» en utilisant des méthodes statiques de la classe Collections : public static <T> Collection<T> synchronizedcollection(collection<t> c) public static <T> Set<T> synchronizedset(set<t> s) public static <K,V> Map<K,V> synchronizedmap(map<k,v> m)... Le paquetage java.util.concurrent Depuis Java 5.0, on a à disposition un paquetage contenant des interfaces et classes utilitaires implantant un certain nombre de solutions de synchronisation etc. lancement et gestion de tâches asynchrones via Executor collections concurrentes + Queue et BlockingQueue des variables atomiques des primitives de synchronisation : sémaphores, mutex, barrières (RV communs de plusieurs threads), échangeur (RV de deux threads et échange de données)... des nouveaux verrous, en écriture et en lecture une précision à la nanoseconde Christophe Garion IN Threads 47/ 49 Références Christophe Garion IN Threads 48/ 49 multithreadedtc : a framework for testing concurrent Java applications. K. Arnold, J. Gosling, and D. Holmes. The Java Programming Language. Java Series. Addison-Wesley, third edition, B. Goetz, J. Bowbeer, T. Peierls, and J. Bloch. Java concurrency in practice. Addison-Wesley, S. Oaks and H. Wong. Java Threads. O Reilly, 2 nd edition, In French, traduction de V. Lamareille. Christophe Garion IN Threads 49/ 49

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

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

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

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

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

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

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

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

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

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

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

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007 NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Programmation réseau en Java : les threads

Programmation réseau en Java : les threads Programmation réseau en Java : les threads Michel Chilowicz Transparents de cours sous licence Creative Commons By-NC-SA Master 2 TTT Université Paris-Est Marne-la-Vallée Version du 28/02/2013 chilowi

Plus en détail

La programmation concurrente

La programmation concurrente La programmation concurrente Jean-Ferdy Susini Maître de Conférences - CNAM Département Informatique Sources : Android Developpers, Wikipedia Paris, 06/05/2015 Architecture matérielle 2 Considérons l architecture

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

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

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

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

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com Systèmes d Exploitation temps réel 1 2 Plan de l intervention 1. Introduction aux Systèmes Temps Réel 2. Programmation concurrente Synchronisation et communication Besoin en facultés temporelles 3. Ordonnancement

Plus en détail

Programmation avancée et répartie en Java : les processus légers

Programmation avancée et répartie en Java : les processus légers Programmation avancée et répartie en Java : les processus légers Frédéric Gava L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours de M1 MIAGE (d après les notes de cours de Fabrice Mourlin)

Plus en détail

Etat de l art de Java temps réel Ecole d été Temps Réel Nancy 2005 Marc richard-foy

Etat de l art de Java temps réel Ecole d été Temps Réel Nancy 2005 Marc richard-foy Etat de l art de Java temps réel Ecole d été Temps Réel Nancy 2005 Marc richard-foy Le langage Java - Copyright 2004 - AONIX. Tous droits réservés. Page 1 Plan 1. Concepts et exemples de la concurrence

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

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

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

Cours 3: Coopération entre processus: Synchronisation + Communication

Cours 3: Coopération entre processus: Synchronisation + Communication Cours 3: Coopération entre processus: Synchronisation + Communication Coopération entre processus & Synchronisation + Communication 1. Introduction 2. Rendez-vous de N entités 3. Producteur(s) / Consommateur(s)

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Cours 3: Coopération entre processus: Synchronisation + Communication

Cours 3: Coopération entre processus: Synchronisation + Communication Cours 3: Coopération entre processus: Synchronisation + Communication Coopération entre processus & Synchronisation + Communication 1. Introduction 2. Rendez-vous de N entités 3. Producteur(s) / Consommateur(s)

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

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

Programmation concurrente Problématiques associées. Chap #3.2

Programmation concurrente Problématiques associées. Chap #3.2 Programmation concurrente Problématiques associées Chap #3.2 1 Introduction L exécution simultanée de plusieurs tâches concurrentes ne s effectue pas sans difficultés. Plusieurs threads peuvent accéder

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

Programmation Java Avancée

Programmation Java Avancée Programmation Java Avancée Module RPCI01 Département R&T IUT de Villetaneuse 2 novembre 2015 Département R&T Programmation Java Avancée 2 novembre 2015 1 / 74 Plan du cours 1 La gestion des exceptions

Plus en détail

Prog. Concurrentielle et Interfaces Interactives Programmation concurrentielle Thread, multi-thread, synchronisation

Prog. Concurrentielle et Interfaces Interactives Programmation concurrentielle Thread, multi-thread, synchronisation Prog. Concurrentielle et Interfaces Interactives Programmation concurrentielle Thread, multi-thread, synchronisation frederic.vernier@u-psud.fr Point de vue du système: Processeur et temps machine Du point

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Notion de thread (1/2)

Notion de thread (1/2) Notion de thread (1/2) 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

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

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Exclusion mutuelle Synchronisation avancée. Programmation parallèle et concurrente

Exclusion mutuelle Synchronisation avancée. Programmation parallèle et concurrente Exclusion mutuelle Synchronisation avancée Programmation parallèle et concurrente Problématique Synchronisation = essentielle si utilisation de plusieurs threads Développement d'applications robustes 2

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Introduction aux Systèmes Distribués. Compléments de programmation Java : Flux & Threads

Introduction aux Systèmes Distribués. Compléments de programmation Java : Flux & Threads Introduction aux Systèmes Distribués Licence Informatique 3 ème année Compléments de programmation Java : Flux & Threads Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr

Plus en détail

Threads Java 1.5 Synchronisation

Threads Java 1.5 Synchronisation Threads Java 1.5 Synchronisation Avancée Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 23 février 2012 Arnaud Labourel (Université de Provence) Threads Java Synchronisation

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 +Cours 2 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

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

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

Plus en détail

1 Questions de cours (4,5 points) 2 Multiplication avec des PRAM (4 points)

1 Questions de cours (4,5 points) 2 Multiplication avec des PRAM (4 points) 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

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

Cours 1 : Introduction Générale + Objet

Cours 1 : Introduction Générale + Objet Organisation du cours Équipe pédagogique L2 S4 2009 : 2010 Programmation Objet Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet 10 cours de 1h30 o Jean-Claude MARTIN (MARTIN@LIMSI.FR)

Plus en détail

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory Package java.net Classes class ContentHandler class DatagramPacket class DatagramSocket class InetAddress final class ServerSocket final class Socket class SocketImpl final class URL abstract class URLConnection

Plus en détail

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP RMI : Remote Method Invocation Appel de méthodes à distance TD/TP Patrice Torguet torguet@irit.fr Université Paul Sabatier But l But du TD/TP : application répartie permettant de gérer des comptes bancaires.

Plus en détail

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Cours1 +Cours 2 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Exclusion mutuelle par attente active Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud Mai 2012 Yann Thoma (HES-SO / HEIG-VD

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Cours : Calcul Parallèle Travaux dirigés E. Goubault & S. Putot TD 1

Cours : Calcul Parallèle Travaux dirigés E. Goubault & S. Putot TD 1 Ecole Polytechnique Cours : Calcul Parallèle Travaux dirigés E. Goubault & S. Putot TD 1 6 janvier 2014 1 Démarrage de threads simples Question Faire un programme JAVA qui démarre deux threads: Le premier

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

Sockets. Karima Boudaoud IUT- R&T

Sockets. Karima Boudaoud IUT- R&T Sockets Karima Boudaoud IUT- R&T Rappels sur les sockets Qu est ce qu un socket? Point d entrée entre 2 appli. du réseau Permet l échange de donnée entre elles à l aide des mécanismes d E/S (java.io) Différents

Plus en détail

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

Plus en détail

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

Plus en détail

Gestion des Processus

Gestion des Processus Plan Gestion des Processus Concept de processus Ordonnancement Ryan Cassel cassel@limsi.fr Synchronisation Université Paris XI 2 de Tanenbaum Pour préparer un gateau: Recette Programme Ingrédients

Plus en détail

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX Examen nal 1 INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Durée: 13h30 16h30 Documentation : Documentation personnelle (papier) autorisée. Nom: Code permanent: 1 2 3 4 5 Total

Plus en détail

Exercices de programmation concurrente (PCO) semestre printemps 2014-2015. Exclusion mutuelle, synchronisation, coordination

Exercices de programmation concurrente (PCO) semestre printemps 2014-2015. Exclusion mutuelle, synchronisation, coordination Prof. Yann Thoma Exercices de programmation concurrente (PCO) semestre printemps 2014-2015 Exclusion mutuelle, synchronisation, coordination Question 1: Exclusion mutuelle Soit les deux tâches T 0 et T

Plus en détail

Synchronisation des processus. Didier Verna. didier@lrde.epita.fr http://www.lrde.epita.fr/ didier. Systèmes d Exploitation. Didier Verna EPITA

Synchronisation des processus. Didier Verna. didier@lrde.epita.fr http://www.lrde.epita.fr/ didier. Systèmes d Exploitation. Didier Verna EPITA 1/16 Synchronisation des processus didier@lrde.epita.fr http://www.lrde.epita.fr/ didier 2/16 Table des matières 1 2 Synchronisation matérielle 3 Synchronisation logicielle 4 classiques 4/16 Nécessité

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Parallélisme. (Basé sur Concepts of Programming Languages, 8 th edition, by Robert W. Sebesta, 2007)

Parallélisme. (Basé sur Concepts of Programming Languages, 8 th edition, by Robert W. Sebesta, 2007) Parallélisme (Basé sur Concepts of Programming Languages, 8 th edition, by Robert W. Sebesta, 2007) 1 Les différents types de Parallélisme Le Parallélisme dans l'exécution de logiciel peut se produire

Plus en détail

LOG4430 : Architecture et conception avancée

LOG4430 : Architecture et conception avancée LOG4430 : Architecture et conception avancée Abdou Maiga Patrons pour la conception d applications distribuées Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc,

Plus en détail

Communication et et synchronisation en en Ada, en en C/Posix et et en en Java 1.5

Communication et et synchronisation en en Ada, en en C/Posix et et en en Java 1.5 Communication et et synchronisation en en Ada, en en C/Posix et et en en Java 1.5 Samia Bouzefrane Maître de Conférences CEDRIC CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra 1 Sommaire

Plus en détail

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr) Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Plus en détail

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Applications Concurrentes : Conception, Outils de Validation

Applications Concurrentes : Conception, Outils de Validation Applications Concurrentes : Conception, Outils de Validation ACCOV_B Chapitre 5 CONCURRENCE EN JAVA CNAM - département informatique 5. 1 option réseaux, systèmes et multimédia CONCURRENCE EN JAVA MÉTHODES

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Lecture de variable automate en utilisant le service web de l ETZ (application J2SE)

Lecture de variable automate en utilisant le service web de l ETZ (application J2SE) Lecture de variable automate en utilisant le service web de l ETZ (application J2SE) Sommaire 1. Objectifs...2 2. Création d un nouveau projet J2SE...2 3. Intégration du client Web Service...5 3.1. Description

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Le problème des lecteurs et rédacteurs : La communication par envoi de messages. définition. Les processus lecteurs et rédacteurs

Le problème des lecteurs et rédacteurs : La communication par envoi de messages. définition. Les processus lecteurs et rédacteurs Le problème des lecteurs et rédacteurs définition Ce problème généralise celui de l exclusion mutuelle. On distingue deux types de processus : Les lecteurs (readers) qui lisent uniquement l information

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION EILCO ING 1 - POO Java Contrôle 2014/2015 Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

On appelle variable condition une var qui peut être testée et

On appelle variable condition une var qui peut être testée et Un concept plus général: g Variables condition On appelle variable condition une var qui peut être testée et endort le thread qui la teste si la condition est fausse le réveille quand la condition devient

Plus en détail

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

Programmation Orientée Objet. Exceptions et assertions

Programmation Orientée Objet. Exceptions et assertions Programmation Orientée Objet Exceptions et assertions Julien Provillard http://www.i3s.unice.fr/~provilla/poo/ julien.provillard@unice.fr Robustesse et Exceptions Error, RuntimeException Exceptions (non)

Plus en détail

ESSI 2 Programmation concurrente TD2 : sémaphores et moniteurs en Java

ESSI 2 Programmation concurrente TD2 : sémaphores et moniteurs en Java ESSI 2 Programmation concurrente TD2 : sémaphores et moniteurs en Java JF Lalande, Michel Cosnard, Fabrice Peix 26 Avril 2006 inspiré des excellents TDs de Jean-Paul Rigault 1 Le coiffeur dormeur Il s

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Les threads. Chapitre 4. 4.1 Introduction. 4.1.1 Avantages

Les threads. Chapitre 4. 4.1 Introduction. 4.1.1 Avantages Chapitre 4 Les threads 4.1 Introduction Le modèle de processus décrit au chapitre précédent est un programme qui s exécute selon un chemin unique avec un seul compteur ordinal. On dit qu il a un flot de

Plus en détail

ARCHITECTURES MATÉRIELLES SYSTÈMES INFORMATIQUES

ARCHITECTURES MATÉRIELLES SYSTÈMES INFORMATIQUES CENTRALISÉE RÉPARTIE mémoire locale mémoire locale mémoire locale mémoire locale mémoire locale mémoire locale processeur processeur processeur processeur processeur processeur instructions messages MÉMOIRE

Plus en détail

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher 11 Serveurs réseau En pratique, il y a bien plus de chances que vous écriviez du code de client réseau que du code de serveur réseau. Toutefois, bon nombre d applications intègrent à la fois des fonctionnalités

Plus en détail