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.