
        PROGRAMMATION AVANCEE TEMPS REEL EN JAVA 
(Durée 3 jours)
 
   3/4   
10. Les utilitaires de concurrence introduits à partir de Java 5 
 Les classes Lock et les conditions multiples 
 Les files d’attente BlockingQueue 
 Les collections concurrentes  
 Les utilitaires de synchronisation : sémaphores à compte, barrières cycliques, 
compte à rebours, files synchrones, échangeurs producteurs consommateurs etc. 
 
En  portant  un  regard  critique  sur  le  modèle  de  base  Java  qui  s’appuie  sur  les  blocs 
synchronisés (instruction synchronized) et le mécanisme de notification (wait/notify) on 
introduit la bibliothèque des  utilitaires  de concurrence de Java 5 qui étend  ce  modèle, 
couvre les paradigmes temps réel classiques de synchronisation et permet le déploiement 
de composants multi-thread sûrs de fonctionnement.  
11. Les utilitaires de concurrence introduits à partir de Java 5 pour la programmation 
asynchrone 
 Traitements asynchrones avec les abstractions Callable et Future 
 Les pools de threads, la structure d’accueil Executor  
 
Présenter les concepts Java 5 pour la programmation asynchrone. 
12. Ordonnancement temps réel 
 Priorité des threads 
 Contrôle de l’inversion de priorité 
 Stratégie d’allocation de ressource avec protocole d’héritage de priorité 
 Interface avec le système d’exploitation sous-jacent 
 Interaction des threads Java avec les threads natifs 
 Call-back de threads Java depuis du code C (Java Native Interface) 
 
On présente les techniques d’ordonnancement des threads utilisées par les systèmes temps 
réel (RMS, EDF etc.) ainsi que la problématique de l’inversion de  priorité. On montre 
comment on peut mettre en œuvre en Java les techniques d’analyse d’ordonnancement des 
threads  telles que RMA (Rate Monotonic Analysis). 
On  montre  également  comment  les  threads  Java sont  mis  en  œuvre  sur  les  threads  du 
système  d’exploitation  sous-jacent  et  comment  ils  interagissent  avec  les  threads  natifs 
(non Java) de l’application 
13. Contrôle des ressources mémoire 
 Ramasse-miette préemptif, incrémental et ajustable 
 Gestion déterministe des collections d’objets 
 
Le déterminisme du modèle d’allocation mémoire peut être un frein à la programmation 
de  systèmes  temps  réel  Java.  Après  un  aperçu  des  différentes  techniques  de  ramasse-
miette, cette section présente un exemple de ramasse-miette temps réel.  
14. La bibliothèque Javolution 
Cette section présente les concepts mis en œuvre dans la bibliothèque Javolution et qui 
permettent au programmeur d’allouer et de recycler des objets en mémoire de façon 
déterministe.