Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parVirgile Prudhomme Modifié depuis plus de 5 années
1
TP N°6: Construction d’un Serveur Multi-Client
Les Threads en Java (Processus Légers)
2
Thread = un fil (d’exécution)
Une méthode pour créer un thread en java, consiste à: Définir la tâche exécutée par le thread Lier la tâche au thread Lancer le thread
3
Classe Thread: un premier exemple
Créer un nouveau projet ThreadExemples (Main Class Cochée)
4
Thread Principal
5
Créer un nouveau thread
Définir la tâche du thread = Créer un objet Runnable Runnable est une interface public interface Runnable { public abstract void run(); } En fait, une interface est une classe abstraite dont toutes les méthodes sont abstraites et dont tous les attributs sont constants (des constantes, voir le mot-clé final). L'interface Runnable doit être implémentée par n'importe quelle classe dont les instances sont destinées à être exécutées par un thread. La classe doit définir une méthode sans argument appelée run. Navigate : go to source
6
Ajouter une classe «Tâche» dans le projet précédent : New / Java Class
La tâche ici = Calcul le Produit de deux entiers
7
public class Tache implements Runnable { int x; int y; Tache(int x,int y) {this.x=x; this.y=y;} //Constructeur public void run(){ // Méthode run() System.out.println(Thread.currentThread().getName()); System.out.println(x+"*"+y+"="+x*y); } }
8
Dans le main: Runnable job = new Tache(5,6); Thread t = new Thread(job); t.setName("t1"); // Optionnel t.start();
9
Créer plusieurs threads:
Ordre choisi par l’ordonnanceur de la JVM
10
Solution À l’arrivée d’un nouveau client, créer un nouveau thread
Notre serveur peut prendre en charge plusieurs clients mais à tour de rôle: Solution À l’arrivée d’un nouveau client, créer un nouveau thread serveur Multi-client ( multi-threaded)
11
Créer un nouveau projet:
Main Tâche du thread
12
Modifions le code du Serveur:
ServerSocket svr = new ServerSocket(5000); while (true) { Socket sClient = svr.accept(); Runnable jobtodo = new TraitReq(sClient); Thread t = new Thread(jobtodo); t.start(); System.out.print ("Le Serveur a créé le thread"+t.getName()+"\n"); }
13
Traitement de la Requête Client
Tâche du thread Traitement de la Requête Client
14
public class TraitReq implements Runnable {
Socket client; TraitReq(Socket client) { this.client = client;} // Constructeur public void run() { // Copier Coller Try { DataInputStream Sin = new DataInputStream(client.getInputStream()); DataOutputStream Sout= new DataOutputStream(client.getOutputStream()); String ch; ch= Sin.readUTF(); while (!ch.equalsIgnoreCase("Fin")){ Sout.writeUTF(ch.toUpperCase()); ch = Sin.readUTF();} client.close();
15
Et Enfin … Lancer le Serveur Multi-Client Lancer plusieurs Clients
Observer l’affichage dans la console côté Serveur
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.