TD Java RMI 1) Retour sur les Threads Java Rappels : Les méthodes utiles de la classe Threads : start() : lancer le thread run() : méthode à redéfinir, contient le code exécuté au lancement du thread join() : attendre la fin du thread wait() : endort le thread jusqu'à ce qu'il reçoive un événement notify()/notifyAll() : réveil un ou tous les threads en attente Exercice : 1. Concevoir un algorithme parallèle pour le tri d'un tableau en utilisant le principe du Quicksort. 2. Ecrire le code de l'algorithme de la question 1 en utilisant les Threads Java et en supposant que l'on dispose d'une méthode partition qui classe les éléments d'un tableau et renvoie l'indice du pivot dans le tableau. 2) Appel d'une méthode sur un objet distant en Java RMI Rappels : Interface de description de l'objet distant donne la signature des méthodes que l'on peut appeler à distance doit étendre l'interface java.rmi.Remote chaque méthode doit lancer l'exception RemoteException (échec de l'appel distant) Serveur : implémentation de l'interface code exécuté lors de l'appel distant à une méthode de cet objet hérite de java.rmi.server.UnicastRemoteObject Serveur : enregistrement de l'objet distant créer une instance de l'objet distant enregistrer cet objet auprès du serveur de nom avec Naming.rebind(“rmi://host:port/Nom”), où Nom sert à identifier l'objet distant (par défaut host = localhost et port = 1099) Client : appel à une méthode d'un objet distant récupérer une référence sur l'objet distant par Naming.lookup(“rmi://host:port/Nom”) (renvoie une référence sur un Object) appeler la méthode avec cette référence Exercice : 1. Ecrire une interface OpMatrice qui définit une méthode permettant de faire la multiplication de deux matrices carrées. 2. Ecrire une classe OpMatriceImpl qui implémente cette interface. 3. Ecrire le code du serveur qui instancie un objet OpMatriceImpl et l'enregistre auprès du serveur de nom. 4. Ecrire le code d'un client qui invoque la méthode de multiplication sur deux matrices.