Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 5 Sockets et processus légers.

Slides:



Advertisements
Présentations similaires
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
Advertisements

IChannelIPrivilegedIMultithreadedIServantICacheableIMimeResponse Type custom : les interfaces de programmations IChannel : canal standard, stateful 5 méthodes.
Le mécanisme des exceptions
Cours réseaux Essi2 Anne-Marie Déry
Programmation Réseaux Illustration : Les Sockets en Java
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Communication par diffusion : Multicast Clientn Serveur Client1 Client2 Gr.
Les Sockets et Java Cours Harmonisation Anne-Marie Déry.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Mode Message Asynchrone (interface Socket)
Administrer Internet et les réseaux TCP / IP
15 - Subnetting.
- Couche 4 - Couche transport. Sommaire 1) Caractéristiques de la couche transport 2) Les protocoles TCP & UDP 3) Méthode de connexion TCP.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
LA TECHNOLOGIE WAP WIRLESS APPLICATION PROTOCOL Arnaud MERGEY Davy RIBOUD David ZAMORA DESS RESEAUX 2000/2001.
Multicast Fiable Actif (protocole DyRAM) F. BOUHAFS, M. MAIMOUR, C. PHAM INRIA RESO/LIP VTHD++/Brest/03-04 Juillet 2003.
Introduction à Java - les « Threads » -
Open System Interconnect reference model
Plan du cours 5:Threads introduction Définition Création des Threads
Architecture de réseaux
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
UDP – User Datagram Protocol
INTRODUCTION AUX RESEAUX
Les entrées /sorties en Java François Bonneville
Connexion base de données
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Gestion des Périphériques
Serveurs Partagés Oracle
Chef de projet : COUDERC Antoine Equipe : DELMON - GENIEZ - LACROIX
Virtual Local Area Network
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Programmation concurrente
Transport Layer1 Niveau message r Niveau de protocole capable de prendre en charge la transmission des messages de bout en bout. r Ce niveau découpe les.
IFT1025: Programmation 2 Internet Jian-Yun Nie. Concepts Communication sur lInternet Connexion dans Java.
Multi-Thread Jian-Yun Nie
IFT 6800 Atelier en Technologies d’information
Le Modele OSI.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Rappels: Java et internet M1 Protocoles réseaux. Sommaire Rappels java Entrées-sorties Thread Rappels tcp-udp Socket tcp et SocketServer Socket udp compléments.
COURS DE PROGRAMMATION ORIENTEE OBJET :
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Vue d'ensemble Configuration d'adresses IP
Adressage internet utilisé par le protocole IP (Internet Protocol)
TCP – Transmission Control Protocol
Introduction à la programmation (420-PK2-SL) cours 20 Gestion des applications Technologie de l’information (LEA.BW)
La pile TCP/IP Adressage IP, ARP, ICMP, UDP, TCP, Routage, DNS
Communication entre processus - UDP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Développement d’application client/serveur
Réseau Infrastructure Partage ressources Protocole Sécurité.
Couche Transport (4) Routeur Messages entre A et B
NSY107 - Intégration des systèmes client-serveur Cours du 20/05/ début 27/05/2006 (4 à 6 heures) © Emmanuel DESVIGNE Document sous licence libre.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Les sockets.
Les Réseaux Informatiques
Protocoles réseaux Sommaire (prévision): Couche liaison de données
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Introduction à la programmation objet avec java
Architecture Client/Serveur
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Client/Server Socket. Client/Serveur.
Département Informatique Les Réseaux Informatiques Couche Transport Protocoles UDP & TCP Laurent JEANPIERRE.
Transcription de la présentation:

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 5 Sockets et processus légers

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 2 1.Package Java.net  Adresses internet  Socket de communication 2.Communication en mode connecté  Ouverture de la connexion  Flots de lecture et d’écriture 3.Communication en mode non connecté  Envoi d’un datagramme  Réception d’un datagramme 4.Gestion des processus légers  Vie d’un processus  Concurrence d’accès à des ressources et synchronisation Sommaire

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 3 INTRODUCTION INTRODUCTION Bibliographie Bibliographie Jan Graba, An Introduction to Network Programming with Java, Springer-Verlag London, 2006 E.-R. Harold, Java Network Programming, O’Reilly, 2004 G. Roussel, E. Doris, N. Bedon, R. Forax, Java et Internet, Vuibert, 2002

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 4 34 classes et 12 types d’exception Ensemble de classes permettant une interaction avec le réseau pour recevoir et envoyer des données. Développement de programmes établissant des communications avec d’autres applications distantes Communication réseau Gestion des protocoles des couches réseaux et transport Encapsulation de la notion de Socket Accélération par l’utilisation de caches Utilisation simplifiée par rapport aux bibliothèques systèmes (Unix et Windows) Programmation internet Gestion des protocoles de la couche application (ssh, sftp, http, …) Sécurisation par l’utilisation de mots de passe 1. PACKAGE JAVA.NET 1. PACKAGE JAVA.NET

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié ADRESSE INTERNET 1.1 ADRESSE INTERNET Classe InetAdress Classe InetAdress Représentation d’une adresse internet avec deux attributs hostName représentant le nom sous forme d’une chaîne de caractères Address représentant le numéro IP sous forme d’un tableau d’octets Méthodes statiques pour obtenir une InetAddress Pas de constructeur, InetAddress InetAddress.getLocalHost() obtention de l’InetAdress correspondant à la machine locale InetAddress InetAddress.getByName(String host) obtention de l’InetAdress d’une machine d’un nom donné InetAddress InetAddress.getByAdress(byte[] addr) obtention de l’InetAdress d’une machine d’un numéro IP donné InetAddress InetAddress.getByAdress(String host, byte[] addr) obtention de l’InetAdress d’une machine d’un nom et d’un numéro IP donné Levée de l’exception UnknownHostException en cas de machine inconnue

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 6 Obtenir le nom d’une machine String getHostName() String getHostAddress()Nom de la machine Obtenir le numéro IP d’une machine byte[ ] getAddress() Adresse IP sous forme de 4 octets Caractéristiques boolean isAnyLocalAddress()Adresse non spécifiée ( ) boolean isLoopbackAddress()Adresse locale de test ( ) localhost boolean isLinkLocalAddress()Adresse locale ( ) boolean isSiteLocalAddress()Adresse privée ( ) boolean isMulticastAddress()Adresse multicast ( ) boolean isReachableAddress(int timeout)Test de connectivité 1.1 ADRESSE INTERNET 1.1 ADRESSE INTERNET Méthodes (1/2) Méthodes (1/2)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié ADRESSE INTERNET 1.1 ADRESSE INTERNET Méthodes (2/2) Méthodes (2/2) getInetAdress.java try{ InetAddress monAdresse = InetAddress.getByName("smtp.laposte.net"); System.out.println(monAdresse.getHostName()); System.out.println( monAdresse.getHostAddress()); System.out.print( monAdresse.isAnyLocalAddress() + " "); System.out.print( monAdresse.isLoopbackAddress() + " "); System.out.print( monAdresse.isLinkLocalAddress() + " "); System.out.println( monAdresse.isReachable(100)); } catch (UnknownHostException exp){ System.out.println("machine inconnue"); } catch (IOException e) { System.out.println("machine non atteignable"); } smtp.laposte.net false false

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SOCKET DE COMMUNICATION 1.2 SOCKET DE COMMUNICATION Principes Principes Lien de communication inter-processus Développé initialement sous UNIX (1983) Extension de la notion de tube nommé (pipe) pour des machines distantes Utilisation des mécanismes classiques d ’E/S (java.io) Restriction au domaine AF_INET pour les sockets java (couche réseau) Une adresse (nom, numéro IP) et un numéro de port Diagramme de communication Un réseau et deux sockets

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SOCKET DE COMMUNICATION 1.2 SOCKET DE COMMUNICATION Type de services IP (Internet Protocol) Type de services IP (Internet Protocol) Socket STREAM Protocole TCP (Transmission Control Protocol) Mode connecté avec contrôle de flux Connexion établie entre les machines distantes Fiabilité de la transmission des données Comparaison avec une communication téléphonique Socket DATAGRAM Protocole UDP (User Datagram Protocol) Mode non connecté avec transmission par paquet sans contrôle de flux Pas de connexion entre le client et le serveur Pas de sécurité de transmission des données Comparaison à une communication par lettre

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SOCKET DE COMMUNICATION 1.2 SOCKET DE COMMUNICATION Port d’entrée-sortie Port d’entrée-sortie Canal de communication accessibles à travers un réseau Identification par un entier (16 bits), Correspondance avec un service spécifique Services standard internet terminal sécurisé (SSH port 22), courrier sortant (SMTP port 25), serveur web (HTTP port 80), courrier entrant (POP3 port 110), transfert de fichiers sécurisé (SFTP port 115), courrier entrant (IMAP3 port 220), authentification (LDAP, port 389), serveur web sécurisé (HTTPS port 443), accès à la base de données Mysql (port 3306) Ports utilisateurs (entre et ) consultation de la table des services enregistrement à l’IANA

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SOCKET DE COMMUNICATION 1.2 SOCKET DE COMMUNICATION Classe InetSocketAdress Classe InetSocketAdress Représentation d’une adresse de socket avec deux attributs Adresse IP sous la forme d’une InetAdress Port d’entrée/sortie sous la forme d’un entier Constructeurs InetSocketAddress(String hostName, int port) InetSocketAddress(InetAddress addr, int port) InetSocketAddress(int port)adresse IP non spécifiée (utilisée en écoute) Accesseurs InetAddress getAddress() accès à l’InetAddress String getHostName() accès au nom int getPort() accès au numéro de port

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMMUNICATION EN MODE CONNECTE 2. COMMUNICATION EN MODE CONNECTE Principes Principes Protocole fiable de la couche réseau (RFC 793) Flot découpé en paquets (~536 octets) Mécanismes de contrôle de flot (contrôle de congestion) Mécanisme d'acquittement des paquets alarme activée à l'émission d'un paquet, déactivation en cas de réception de l'acquittement, réémission après un temps donné Ajout à chaque paquet d’un numéro de séquence préservation de l'ordre, élimination des doublons

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié OUVERTURE DE LA CONNEXION 2.1 OUVERTURE DE LA CONNEXION Demande de connexion (1/2) Demande de connexion (1/2) Choix de l’adresse des sockets Adresse de la socket locale : saddr1 addr1 : numéro IP de la machine locale port1 : numéro de port choisie de la machine locale Adresse de la socket distante : saddr2 addr2 : numéro IP de la machine distante port2 : numéro de port choisie de la machine distante Trois étapes 1.Construction d’une socket de communication Socket s = new Socket() 2.Attachement du port de connexions.bind (saddr1) 3.Demande de connexion à une socket distantes.connect (saddr2) Constructeur alternatif Socket s = new Socket(addr2, port2, addr1, port 1) Levée de l’exception IOException en cas de refus de connexion

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 14 DemandeConnexion.java // création de la socket Socket s = new Socket(); InetAddress addr1 = null; int port1 = 32005, port2 = 32006; try { addr1 = InetAddress.getLocalHost(); } catch (UnknownHostException exp){ } try { // attachement InetSocketAddress saddr1 = new InetSocketAddress(addr1, port1); s.bind(saddr1); // adresse de la machine distante InetAddress addr2 = InetAddress.getByName(" "); InetSocketAddress saddr2 = new InetSocketAddress(addr2, port2); // demande de connexion s.connect(saddr2); System.out.println("Connexion établie entre " + s.getLocalSocketAddress() + " et " + s.getRemoteSocketAddress()); Connexion établie entre / :32005 et / : OUVERTURE DE LA CONNEXION 2.1 OUVERTURE DE LA CONNEXION Demande de connexion (2/2) Demande de connexion (2/2)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié OUVERTURE DE LA CONNEXION 2.1 OUVERTURE DE LA CONNEXION Acceptation de la connexion (1/2) Acceptation de la connexion (1/2) Choix des caractéristiques du service Adresse de la socket de service : saddr addr : numéro IP de la machine locale port : numéro de port choisie pour le service max : nombre maximum de connexions Trois étapes 1.Construction d’un écouteur de connexion ServerSocket ss = new ServerSocket() 2.Attachement du port de service ss.bind (addr, max) 3.Acceptation de la connexion et Socket s = ss.accept () et récupération de la socket

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 16 AcceptionConnexion.java int port = 32006; InetSocketAddress saddr = null; try { InetAddress addr = InetAddress.getLocalHost(); saddr = new InetSocketAddress(addr, port); } catch (UnknownHostException exp){ } try { // création d'un écouteur de connexion ServerSocket ss = new ServerSocket(); // attachement ss.bind(saddr); // acceptation de la connexion Socket s = ss.accept(); System.out.println("Connexion établie entre " + s.getLocalSocketAddress() + " et " + s.getRemoteSocketAddress()); } catch (IOException exp){ } Connexion établie entre / :32006 et / : OUVERTURE DE LA CONNEXION 2.1 OUVERTURE DE LA CONNEXION Acceptation de la connexion (2/2) Acceptation de la connexion (2/2)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié FLOTS DE LECTURE ET D’ECRITURE 2.2 FLOTS DE LECTURE ET D’ECRITURE Gestion des flots Gestion des flots Canal de communication à double sens (full duplex) Fourniture d’un flot de lecture des données arrivant sur la connexion InputStream getInputStream() Fourniture d’un flot d’écriture des données sortant de la connexion OutputStream getOutputStream() Fermeture du flot de lectureshutdownInput()boolean isOutputShutdown() Fermeture du flot d’écritureshutdownOutput() boolean isInputShutdown() Fermeture du canalClose() boolean isClosed() Lecture/Ecriture Méthodes read/write Composition de classes new InputStreamReader(s.getInputStream()));

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié FLOTS DE LECTURE ET D’ECRITURE 2.2 FLOTS DE LECTURE ET D’ECRITURE Flots (1/2) Flots (1/2) // Création des flots BufferedReader br = null; PrintStream ps = null; try { br = new BufferedReader(new InputStreamReader(s.getInputStream())); ps = new PrintStream(s.getOutputStream()); } catch (IOException exp){ System.out.println("erreur de création des flots"); } // Communication try { ps.println("début de la communication"); String ligne = br.readLine(); System.out.println(ligne); } catch (IOException exp){ System.out.println("erreur d'entée-sortie"); } fin de la communication DemandeConnexion.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié FLOTS DE LECTURE ET D’ECRITURE 2.2 FLOTS DE LECTURE ET D’ECRITURE Flots (2/2) Flots (2/2) // Création des flots BufferedReader br = null; PrintStream ps = null; try { br = new BufferedReader(new InputStreamReader(s.getInputStream())); ps = new PrintStream(s.getOutputStream()); } catch (IOException exp){ System.out.println("erreur de création des flots"); } // Communication try { String ligne = br.readLine(); System.out.println(ligne); ps.println("fin de la communication"); br.readLine(); } catch (IOException exp){ System.out.println("erreur d'entée-sortie"); } début de la communication AcceptionConnexion.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié COMMUNICATION EN MODE NON CONNECTE 3. COMMUNICATION EN MODE NON CONNECTE Introduction Introduction Protocole non fiable de la couche réseau (RFC 768) Pas de flot, Acheminement de bloc de données (datagramme) Taille max des données transportées: ~64Ko Checksum optionnel en IP v4, obligatoire en IP v6 Classe DatagramSocket Socket permettant un service UDP Création d’une socket sur chaque machine Classe DatagramPacket Empaquetage des données envoyées ou reçues Adresse de la socket de destination

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié ENVOI DU DATAGRAMME 3.1 ENVOI DU DATAGRAMME Principes Principes Adresse de la socket distante : saddr addr : numéro IP de la machine distante port : numéro de port choisie de la machine distante Quatre étapes 1.Construction d’une socket de communication DatagramSocket ds = new DatagramSocket() 2.Empaquetage des données dans un tableau de bytes : b 3.Construction du datagramme à transmettre DatagramPacket dp = new DatagramPacket(b, b.length, saddr) 4.Envoi du datagrammeds.send (dp) Levée des exceptions SocketException et IOException void setBroadcast(boolean on) autorisation d’envoi à toutes les machines du sous-réseau void setSendBufferSize(int size) modification de la taille du tampon

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié ENVOI DU DATAGRAMME 3.1 ENVOI DU DATAGRAMME Exemple Exemple // création de la socket DatagramSocket ds = null; int port = 32006; try { ds = new DatagramSocket(); } catch (SocketException exp){ } // adresse de la machine distante InetSocketAddress saddr = null; try { InetAddress addr = InetAddress.getByName(" "); saddr = new InetSocketAddress(addr, port); } catch (UnknownHostException exp){ } // construction et envoi du datagramme try { String s = "début de la communication"; byte[] b = s.getBytes(); DatagramPacket dp = new DatagramPacket(b, b.length, saddr ); ds.send(dp); } catch (SocketException exp){ } catch (IOException exp){ } EnvoiDatagramme.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié RECEPTION DU DATAGRAMME 3.2 RECEPTION DU DATAGRAMME Principes Principes Quatre étapes 1.Construction d’une socket de communication écoutant le port p DatagramSocket ds = new DatagramSocket(p) 2.Construction d’un datagramme contenant un tableau de bytes vide : b DatagramPacket dp = new DatagramPacket(b, b.length) 3.Reception du datagrammeds.receive (dp) 4.Extraction des données du paquet Levée des exceptions SocketException et IOException byte[] getData() tableau de byte contenant les données int getLength() taille en octet des données reçues SocketAddress getSocketAddress() adresse de la socket émettrice

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié RECEPTION DU DATAGRAMME 3.2 RECEPTION DU DATAGRAMME Exemple Exemple DatagramSocket ds = null; int port = 32006; try { ds = new DatagramSocket(port); } catch (SocketException exp){ } // réception du datagramme try { byte b[] = new byte [1024]; DatagramPacket dp = new DatagramPacket(b, b.length); ds.receive(dp); InetSocketAddress saddr = (InetSocketAddress)dp.getSocketAddress(); System.out.println("datagramme en provenance de " + saddr.toString()); System.out.println(new String(b, 0, dp.getLength())); } catch (SocketException exp){} catch (IOException exp){ } ReceptionDatagramme.java datagramme en provenance de / :1131 début de la communication

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié GESTION DES PROCESSUS LEGERS 4. GESTION DES PROCESSUS LEGERS Définitions Définitions Processus (ou tâche) Ensemble d’instructions du processeur à exécuter (programme) associé à un espace mémoire (pile d’exécution, données, descripteurs de ressource) Un seul processus actif par processeur Multiprocessus à temps partagé ou quasi parallélisme Liste de N processus (1 actif, N-1 en veille) et quantum de temps (1/100 sec) Affectation du processeur à un processus différent à chaque quantum de temps Gestion des priorités des processus Impression de parallélisme Processus légers (ou thread) Ensemble de processus partageant des ressources communes (mémoire, …) Synchronisation et concurrence Gestion des accès à une ressource partagée par plusieurs processus légers Mécanisme de synchronisation à base de verrous (moniteurs) Processus en attente (suspendu) d’une ressource affectée à un autre processus

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié VIE D’UN PROCESSUS 4.1 VIE D’UN PROCESSUS Schéma Schéma Lancement du processus Processus actif Processus prêt Processus suspendu Terminaison du processus

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié VIE D’UN PROCESSUS 4.1 VIE D’UN PROCESSUS Classe Thread Classe Thread Constructeurs Thread() Thread(String name) Modification de l’état du processus void start()Lancement du processus (appel par la JVM de la méthode run() void yield()Passage de l’état exécution à l’état prêt void sleep(long ms) Passage à l’état suspendu pendant un temps donné void interrupt() Terminaison du processus Accesseur sur l’état du processus boolean isAlive()retourne vrai si la tâche est prête boolean interrupted() retourne vrai si la tâche a été interrompue Thread.State getState() retourne l’état du processus (NEW, RUNNABLE, BLOCKED, WAITING, TERMINATED)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié VIE D’UN PROCESSUS 4.1 VIE D’UN PROCESSUS Dérivation de la classe Thread (1/2) Dérivation de la classe Thread (1/2) class ProcessusParallèles extends Thread { static private int numero = 0; int numeroProcessus; // Contructeur ProcessusParallèles() { super(("Processus numero " + numero++)); numeroProcessus = numero; } // Corps de l’application public void run() { for (int i=0; i < 10; i++) affiche(i); } void affiche(int i) { try { sleep(100); } catch (InterruptedException e) {} System.out.println(this.getName() + " à l'itération" + i); } ProcessusParallèles.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié VIE D’UN PROCESSUS 4.1 VIE D’UN PROCESSUS Dérivation de la classe Thread (2/2) Dérivation de la classe Thread (2/2) public class testProcessusParallèles { public static void main(String args[]) {//création et activation des 5 Processus for (int i=0; i<5; i++) { Thread p = new ProcessusParallèles(); p.start(); } } testProcessusParallèles.java Processus numero 4 à l'itération 0 Processus numero 0 à l'itération 0 Processus numero 2 à l'itération 0 Processus numero 1 à l'itération 0 Processus numero 3 à l'itération 0 Processus numero 0 à l'itération 1 Processus numero 4 à l'itération 1 Processus numero 2 à l'itération 1 Processus numero 3 à l'itération 1 Processus numero 1 à l'itération 1 Autre moyen de définir des processus : interface Runnable

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié CONCURRENCE D’ACCES A DES RESSOURCES ET SYNCHRONISATION 4.2 CONCURRENCE D’ACCES A DES RESSOURCES ET SYNCHRONISATION Problématiques et outils Problématiques et outils Objets accessibles en écriture par plusieurs processus Constitution de sections critiques (pas de modification de l’état du processus) Modificateur synchronized devant un objet protège son accès pendant le bloc d’instruction suivant devant une méthode protège l’accès à la méthode Méthode de synchronisation void wait() void wait(long) Demande d’accès à un objet (suspendu s’il est affecté) void notify() void notifyAll(long) Réveille un ou plusieurs processus suspendus void join() void join(long) Attente de la terminaison d’un processus