- Principe du multithreading.
- Classe Thread.
- Création et exécution d'un thread.
- Accès simultanés à une ressource.
- Synchronisation
- Etats d'un Thread
- Conseils pratiques
1. Ministère de l’Enseignement Supérieur de la Recherche Scientifique et de la technologie *** * *** Université de la Manouba *** * *** Ecole Nationale des Sciences de l’Informatique Aspects avancés de JAVA Multithreading Présenté par : Ghazouani Mahdi
2. Classe Thread Création d’un Thread Accès simultané Synchronisation Etats d’un Thread SOMMAIRE Définition Avantages / Inconvénients Conseils pratiques
5. Pouvoir répartir différents traitements d'un même programme en plusieurs unités distinctes pour permettre leur exécution "simultanée".
6. Mise en place des mécanismes de synchronisation par le programmeur alors que cette répartition est d'habitude à la charge du système d'exploitation.
23. Création d’un Thread (3/3) Création avec l'interface Runnable package com.personal.threadTest; public class MonThread2 implementsRunnable { public voidrun() { int i = 0; for (i = 0; i > 10; i++) { System.out.println(" " + i); }}} public class MonThread3 { public static void main(String[ ] args) { Thread t = new Thread(new MonThread2()); t.start(); }}
26. Lorsqu'un thread t1 exécute cette méthode sur un objet, un autre thread t2 ne peut pas l'exécuter pour le même objet. En revanche t2 peut exécuter cette méthode pour une autre instance de la même classe. Public synchronizedvoidmaMethode () {...}
27.
28. Cas de méthodes synchronisées trop longue => baisse d'efficacité lors de l'exécution
30. L'objetdont le moniteurest à utiliserdoitêtre passé en paramètre de l'instruction synchronized .Public voidmaMethode () { ... synchronized (objet) { objet.methode();} ... }
31.
32. Lorsqu'une méthode synchronisée d'un objet est appelée, le verrou est mis, aucune autre méthode synchronisée de cet objet ne peut être exécutée.
33.
34. Exécutable : il a été initialisé (il est exécuté si l'ordonnanceur le décide)
35. Mort : fin normal d'un thread (sortie de la méthode run())