COURS-JAVA-bw-9
4 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
4 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

IntroductionLes outilsProducteurs/ConsommateursConclusion/BilanLes processus légersProgrammation orientée objet en langage JAVAChapitre 9 : Les processus légers : thread1Introductionet les Applet2Les outilsClaude Duvallet3Producteurs/ConsommateursUniversité du HavreUFR Sciences et Techniques25 rue Philippe Lebon - BP 5404Conclusion/Bilan76058 LE HAVRE CEDEXClaude.Duvallet@gmail.comhttp://litis.univ-lehavre.fr/∼duvallet/Claude Duvallet — 1/15 JAVA Claude Duvallet — 2/15 JAVAIntroduction IntroductionLes outils Les outilsProducteurs/Consommateurs Producteurs/ConsommateursConclusion/Bilan Conclusion/BilanIntroduction aux Thread Java (1/2) Introduction aux Thread Java (2/2)Exemple 2 en utilisant l’interfaceRunnable :Les threads Java peuvent être créés par :public class Thread2 implements {Extension (extends) de la classe Thread public void run() {System.out.println("Je suis un Thread JAVA");Implémentation (implements) l’interface Runnable}}Exemple 1 en étendant la classeThread :public class Thread1 extends Thread {public class Principale {public void run() {public static void main(String args[]) {System.out.println("Je suis un Thread JAVA");Runnable run = new Thread2();}}Thread th = new Thread (run);th.start();public class Principale {public static void main(String args[]) {System.out.println("Je suis dans la fonction principale");Thread1 th = new Thread1();}th.start();}System.out.println("Je suis dans la fonction ...

Informations

Publié par
Nombre de lectures 77
Langue Français

Extrait

Introduction
Les outils
Producteurs/Consommateurs
Conclusion/Bilan
Les processus légers
Programmation orientée objet en langage JAVA
Chapitre 9 : Les processus légers : thread
1
Introduction
et les Applet
2
Les outils
Claude Duvallet
3
Producteurs/Consommateurs
Université du Havre
UFR Sciences et Techniques
25 rue Philippe Lebon - BP 540
4
Conclusion/Bilan
76058 LE HAVRE CEDEX
Claude.Duvallet@gmail.com
http://litis.univ-lehavre.fr/∼duvallet/
Claude Duvallet — 1/15 JAVA Claude Duvallet — 2/15 JAVA
Introduction Introduction
Les outils Les outils
Producteurs/Consommateurs Producteurs/Consommateurs
Conclusion/Bilan Conclusion/Bilan
Introduction aux Thread Java (1/2) Introduction aux Thread Java (2/2)
Exemple 2 en utilisant l’interfaceRunnable :
Les threads Java peuvent être créés par :
public class Thread2 implements {
Extension (extends) de la classe Thread public void run() {
System.out.println("Je suis un Thread JAVA");
Implémentation (implements) l’interface Runnable
}
}
Exemple 1 en étendant la classeThread :
public class Thread1 extends Thread {
public class Principale {
public void run() {
public static void main(String args[]) {
System.out.println("Je suis un Thread JAVA");
Runnable run = new Thread2();
}
}
Thread th = new Thread (run);
th.start();
public class Principale {
public static void main(String args[]) {
System.out.println("Je suis dans la fonction principale");
Thread1 th = new Thread1();
}
th.start();
}
System.out.println("Je suis dans la fonction principale");
Pourquoi 2 méthodes? Absence d’héritages multiples
}
}
public class ThreadApplet extends JApplet implements Runnable { ... ... ... }
Claude Duvallet — 3/15 JAVA Claude Duvallet — 4/15 JAVAIntroduction Introduction
Les outils Les outils
Producteurs/Consommateurs Producteurs/Consommateurs
Conclusion/Bilan Conclusion/Bilan
Les outils des Thread Java Producteurs/Consommateurs (1/4)
Le serveur :
public class Serveur {
public Serveur() {
suspend()suspendl’exécutionduthreadentraind’êtreéxecuté.
MessageQueue boiteMail = new MessageQueue();
Producteur threadProducteur = new Producteur(boiteMail);
sleep() endort pour un certain temps le thread en train d’être
Consommateur threadConsommateur = new Consommateur(boiteMail);
threadProducteur.start();
exécuté.
threadConsommateur.start();
}
resume() relance l’exécution d’un thread suspendu.
public static void main(String args[]) {
stop() arête l’exécution du thread.
new Serveur();
}
}
Claude Duvallet — 5/15 JAVA Claude Duvallet — 6/15 JAVA
Introduction Introduction
Les outils Les outils
Producteurs/Consommateurs Producteurs/Consommateurs
Conclusion/Bilan Conclusion/Bilan
Producteurs/Consommateurs (2/4) Producteurs/Consommateurs (3/4)
Le producteur : Le consommateur :
import java.util.Date; import java.util.Date;
class Producteur extends Thread { class Consommateur extends Thread {
private MessageQueue boitec; private MessageQueue boitec;
public Producteur(MessageQueue m) { public Consommateur(MessageQueue m) {
boitec = m; boitec = m;
} }
public void run() { public void run() {
while (true) { while (true) {
// produit un élément et le place dans la boite Date message = (Date)boitec.receive();
Date message = new Date(); if (message != null)
System.out.println ("Message envoyé : "+message); // consomme les message qui arrivent dans la boîte
boitec.send(message); System.out.println ("Message reçu : "+message);
} }
} }
} }
Claude Duvallet — 7/15 JAVA Claude Duvallet — 8/15 JAVAIntroduction Introduction
Les outils Les outils
Producteurs/Consommateurs Producteurs/Consommateurs
Conclusion/Bilan Conclusion/Bilan
Producteurs/Consommateurs (4/4) Conclusion/Bilan (1/2)
La file de messages :
import java.util.Vector;
Les processus poids-léger et les threads sont des nouvelles
public class MessageQueue{
abstractions (de nouveaux modèles).
private Vector queue;
Ils permettent de distinguer plusieurs chaînes de contrôle à
public MessageQueue() {
queue = new Vector();
l’intérieur d’un même processus et d’en augmenter le degré de
}
concurrence apparent.
public void send(Object I) {
queue.addElement(I);
On conserve l’équivalence application/processus.
}
Mais un processus compte plusieurs threads :
public Object receive() {
Ils partagent le même espace d’adressage.
Object item;
if( queue.size() == 0)
Leurs exécutions s’effectuent indépendamment les uns des
return null;
autres.
else {
item = queue.firstElement();
En particulier, un thread peut être actif pendant que les autres
queue.removeElementAt(0);
return item;
sont bloquées.
}
}
}
Claude Duvallet — 9/15 JAVA Claude Duvallet — 10/15 JAVA
Introduction
Introduction
Les outils
Une première applet
Producteurs/Consommateurs
La page HTML de l’
Conclusion/Bilan
Conclusion/Bilan (2/2) Les Applet
Dans certains systèmes d’exploitation, le kernel comporte
plusieurs threads concurrents :
Windows NT, Solaris 2.
5
Introduction
On peut distinguer :
les threads usagers
6
Une première applet
Implantés par des librairies,
Le kernel n’en a pas connaissance.
7
La page HTML de l’applet
de ceux du kernel
Qui ne sont pas accessibles à l’utilisateur,
Mais gérer par le répartiteur du kernel.
L’inconvénient majeur des threads est qu’ils introduisent des
problèmes de synchronisation complexes (en particulier dans le
kernel).
Claude Duvallet — 11/15 JAVA Claude Duvallet — 12/15 JAVAIntroduction Introduction
Une première applet Une première applet
La page HTML de l’ La page HTML de l’
Introduction aux Applet Java Une première applet
import javax.swing.*;
En Java, il est possible de construire des applications java.awt.*;
embarquées dans des pages HTML, ce sont les applet.
public class MonApplet extends JApplet {
Elles sont généralement constituées d’une IHM similaire à celles
public void init () {
qui sont présente dans les interfaces graphiques que l’on
setLayout (new FlowLayout ());
add (new JTextField ("Saisie d’une chaîne de caractères"));
retrouve dans les applications autonomes.
add (new JButton ("Bouton 1"));
Pour la conception des applet, il est possible d’utiliser soit le add (new 2"));
}
modèle AWT, soit le modèle SWING.
}
La conception de l’applet commence par la construction d’une
classe qui hérite soit de la classeApplet (AWT) ouJApplet
(Swing) :
Cette classe doit comporter une méthodepublic void init()
qui constituera la méthode d’entrée dans l’applet. Par certains
cotés, elle est similaire à un constructeur et par d’autres cotés elle
est similaire à la méthodemain().
Il n’est pas nécessaire d’écrire une méthodepublic void
static main(String args[])
Claude Duvallet — 13/15 JAVA Claude Duvallet — 14/15 JAVA
Introduction
Une première applet
La page HTML de l’
La page HTML de l’applet
Deux possibilités :
<APPLET code="MonApplet.class" width="500" height="200">
Exemple d’applet.
</APPLET>
ou encore
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<body>
Présentation d’un formulaire réaliser en Java<br />
<object codetype="application/java"
codebase="."
classid="java:MonApplet.class"
width="400" height="350">
<param name="code" value="MonApplet.class" />
Votre navigateur ne permet pas d’exécuter des applet JAVA.
</object>
</body>
</html>
Claude Duvallet — 15/15 JAVA

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents