Communication entre processus - Threads http://java.sun.com/docs/books/tutorial/essential/concurrency/procthread.html
Plan Caractéristiques des protocoles de communication entre processus dans un système réparti Principes généraux communication par datagrammes Client-serveur Communication de groupe par flots (streams) construction de protocoles pour les patterns de communication client-serveur : requête-réponse groupe : même message est envoyé à plusieurs processus données représentation des objets dans les messages références à des objets distants
Création de threads
Thread.sleep(4000); t.join(); synchronized Le thread courant s’arrête jusqu’à ce que t ait terminé synchronized
Énoncé synchronized C1 et c2 ne sont pas utilisés en même temps Inutile de bloquer l’ensemble de l’objet
Création et gestion des threads Interface Executor execute(Runnable command) (new Thread(r)).start(); === e.execute(r); Interface ExecutorService Runnable ou Callable Interface ScheduledExecutorService schedule(Callable<V> callable, long delay, TimeUnit unit) scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) initialDelay, initialDelay+period, then initialDelay + 2 * period, etc. scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) Delai fixe entre la fin de l’action courante et le début de l’action suivante
Threads pools New threads are created using a ThreadFactory. La création de threads demande beaucoup de ressources en mémoire On ne peut pas se permettre de lancer un thread par requête http sans réfléchir public class ThreadPoolExecutor factory methods Executors.newCachedThreadPool() unbounded thread pool, with automatic thread reclamation, Executors.newFixedThreadPool(int) fixed size thread pool Executors.newSingleThreadExecutor() single background thread New threads are created using a ThreadFactory. If not otherwise specified, a Executors.defaultThreadFactory() New tasks submitted in method execute(java.lang.Runnable) will be rejected when when the Executor has been shut down, when the Executor uses finite bounds for both maximum threads and work queue capacity, and is saturated