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



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

Synchro et Threads Java TM

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

INITIATION AU LANGAGE JAVA

Threads. Threads. USTL routier 1

Introduction : les processus. Introduction : les threads. Plan

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

Un ordonnanceur stupide

Notion de thread (1/2)

Une introduction à la technologie EJB (2/3)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

La JVM. La machine virtuelle Java. La JVM. La JVM

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Une introduction à Java

Initiation à JAVA et à la programmation objet.

TP1 : Initiation à Java et Eclipse

Bases Java - Eclipse / Netbeans

Cours 1: Java et les objets

Programmer en JAVA. par Tama

Métriques de performance pour les algorithmes et programmes parallèles

Cours de Systèmes d Exploitation

Auto-évaluation Programmation en Java

Network musical jammin

IV- Comment fonctionne un ordinateur?

Programmation d Applications Concurrentes et Distribuées (INF431)

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

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Derrière toi Une machine virtuelle!

Java - la plateforme

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

Architectures d implémentation de Click&DECiDE NSI

Java 7 Les fondamentaux du langage Java

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Par Objets

Remote Method Invocation (RMI)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Tp 1 correction. Structures de données (IF2)

Chapitre 2. Classes et objets

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TP1 : Initiation à Java et Eclipse

Projet de technologie de l information RAPPORT

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Introduction à la Programmation Parallèle: MPI

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

PG208, Projet n 3 : Serveur HTTP évolué

Diagramme de classes

Généralités sur le Langage Java et éléments syntaxiques.

RMI le langage Java XII-1 JMF

as Architecture des Systèmes d Information

Introduction aux Machines Virtuelles avec VMKit

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

Traitement de données

Sixième partie. Programmation multi-activités Java & Posix Threads. Généralités Java Threads POSIX Threads Autres approches

Projet Active Object

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Support de cours Java

Ordonnancement temps réel

Problèmes liés à la concurrence

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Création d un service web avec NetBeans 5.5 et SJAS 9

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutorial pour une application simple

Corrigés des premiers exercices sur les classes

VMWare Infrastructure 3

TD2 Programmation concurrentielle

Calcul Parallèle. Cours 5 - JAVA RMI

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Leçon 1 : Les principaux composants d un ordinateur

TARDITI Richard Mise en place d une Haute Disponibilité

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Héritage presque multiple en Java (1/2)

TD/TP 1 Introduction au SDK d Android

Traduction des Langages : Le Compilateur Micro Java

Interfaces graphiques avec l API Swing

Java - RMI Remote Method Invocation. Java - RMI

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Applet pour visualiser les variables «automate» notifiées

PIGOURIER Vincent ANNEE SPECIALE 99/00 RAPPORT DE PROJET : LES THREADS JAVA. Responsable : Serge Rouveyrol

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Introduction aux systèmes temps réel. Iulian Ober IRIT

Eclipse atelier Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

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

Remote Method Invocation Les classes implémentant Serializable

SQL Server Installation Center et SQL Server Management Studio

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Transcription:

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

Introduction à la notion de Thread

Introduction aux Threads Dans la programmation que nous avons vu jusqu à aujourd hui, les programmes suivaient de manière séquentielle les instructions du programme. Limites : Si un programme est en train de traiter des donner, il ne peut pas faire la mise à jour d une barre de défilement. L interface utilisateur peut être gelée le temps du traitement, ou par exemple l écoute des boutons mise en attente. Pour palier à ces problèmes, l idée est d avoir plusieurs fils d exécution. Ces fils d exécution s appellent les Threads.

Introduction aux Threads Programme Thread Principal Thread Création d un thread Fin du thread

Introduction aux Threads Chaque thread possède : Un état d exécution Sa propre pile Un espace dédié à des variables propres au thread L accès aux variables du processus L accès aux ressources du processus (exemple : accès à un fichier ouvert par un autre thread du même processus). Processus Ressources, Données Thread 1 Thread 2

Introduction aux Threads Simultanéité physique : ceci est possible sur des machines multi-processeurs. L exécution de deux threads est répartie sur 2 processeurs. Simultanéité logique : chaque thread s exécute à un moment donné, le processeur permute rapidement l exécution de chacun donnant une illusion de simultanéité Thread 1 Thread 1 Thread 1 Thread 1 Thread 1 Thread 1 Thread 1 Thread 1

Introduction aux Threads Les threads sont parfois appelés «processus légers» Multithreading : permet une simultanéité dans un contexte de processus unique Avantages du multithreading par rapport aux processus : partage plus efficace des ressources communes moins de surcharge au niveau du processeur Les threads sont au cœur même de Java et de la machine virtuelle : tout programme Java est exécuté en tant que Thread de la machine virtuelle. (Garbage collector, thread principal, pile des évènements graphique)

La classe Thread

La classe Thread Package : java.lang La classe java.lang.thread implémente le mécanisme permettant la création d un nouveau fil d exécution. Mise en œuvre : Faire dériver la classe de java.lang.thread Puis fournir un point d entrée au nouveau thread en surchargeant la méthode run() Appel de la méthode start(), sur une instance dérivant de Thread, afin de créer le nouveau fil d exécution. Class C extends Thread { public C { // } public void run() { // } }

La classe Thread Exercice : Créer une classe ClasseThreadee, dérivant de Thread, ayant pour fonction d écrire sur la sortie standard son nom, ainsi qu un compteur.( de 1 à 100 000 par exemple) Depuis une classe à part, créer 4 objets de ClasseThreadee s exécutant simultanément.

La classe Thread Avantages Simplicité de mise en œuvre Inconvénients Java n autorisant pas l héritage multiple, le fait de dériver de Thread apporte certaines contraintes de conception objet. Autre solution pour le multi-threading : utilisation de l interface java.lang.runnable.

L interface Runnable

L interface Runnable La deuxième approche pour la création de thread est l utilisation de l interface Runnable. Vous pouvez transformer n importe quelle classe en Thread, en la faisant implémenter l interface Runnable. Concrètement, cela implique d implémenter la méthode d entrée dans le thread : run(). Class C implements Runnable { public C { // } public void run() { // } }

L interface Runnable Comment utiliser l objet implémentant Runnable pour le faire s exécuter dans un nouveau Thread? Réponse : on crée un nouvel objet Thread, en passant en argument au constructeur une référence à l objet implémentant l interface Runnable C obj = new C(); Thread nouvthread = new Thread(obj); nouvthread.start();

L interface Runnable Exercice : Modifiez le code de l exercice précédent de sorte à utiliser l interface Runnable.

Les états d un Thread

Les états d un Thread Comme nous l avons vu en introduction, la machine virtuelle et le système allouent des temps d exécution aux threads. On peut déjà imaginer que le thread peut être «en cours d exécution», «en attente», «fini». En fait il existe 4 états : En attente Prêt à être exécuté En cours d exécution Mort

Les états d un Thread Nous allons à présent nous intéresser aux méthodes qui permettent de changer l état d un thread par programmation. Méthode sleep(long timeinmillisecond) : cette méthode permet de stopper le thread en train de s exécuter pour une période donnée. Si d autres threads sont en état «Prêt à exécuter», le système autorise l exécution de l un d eux. Méthode yield() : laisse l opportunité à d autres Threads de s exécuter. Remarque : d une manière générale, dès qu un thread est en état d attente demandé par programmation, il faut gérer les exceptions InterruptedException. La méthode isinterrupted(), permet de savoir si le flag de demande d interruption a été activé. Nota : à ne pas confondre avec la méthode isalive(), qui elle permet se savoir si le thread en question est encore dans un état autre que «mort».

Les états d un Thread Un thread peut se mettre en attente de la fin d un autre thread. Pour cela on utilise la méthode join(). Nota : possibilité de passer un timeout en paramètre. Nota 2 : ici encore, on est en attente demandée par programmation, il faudra donc traiter les exceptions de type InterruptedException. thread1.join(); // Attends la mort de thread1

Les états d un thread Complément : les threads possèdent des noms. On y accède par setname(), getname(). Lorsqu aucun nom n a été spécifié, le système en attribue un par défaut en utilisant la règle suivante : Thread[Compteur]