Formation Java, programmation multithread


Formation Java, programmation multithread

Catalogue : Développement logiciel



Les modèles, les interfaces et classes de programmation multithread
• Les concepts de base : tâche, ressource d’exécution, activité, service d’exécution, futur.
• Les différentes mises en œuvre des concepts (Runnable, Callable<T>, ExecutorService, Future<T>…).
• Les exceptions non catchées, les groupes de threads.
• Le futur complétable.
Travaux pratiques
Programmation d’une application combinant les différents modèles.
Les contraintes sur le comportement correct des activités
• Quelques méthodes formelles de spécifications.
• Une méthode semi-formelle de spécification.
• La mise en œuvre des spécifications.
Travaux pratiques
Utilisation de méthodes formelles de spécifications.
La synchronisation et communication des threads
• Les status "synchronized", "wait", "notify" et la programmation de moniteurs.
• Les interfaces et classes de synchronisation : verrous, sémaphores, les barrières cycliques.
• Les queue.
Travaux pratiques
Utilisation des interfaces et classes de synchronisation.
L'exécution de tâches en parallèle
• Les ExecutorService.
• Le modèle fork/join (RecursiveTask<T>, RecursiveAction, ForkJoinPool).
Travaux pratiques
Utilisation des services d’exécution et du modèle fork/join.
Les structures de données dédiées à la programmation multithread
• Les collections spécialisées.
• Le stockage local des données de thread : ThreadLocal<T>.
• Les classes Atomic.
Travaux pratiques
Utilisation des structures de données.
Les threads et les performances
• L’impact de la création de threads.
• L’impact de la synchronisation.
• L'impact des caches mémoire.
• Les threads et les IO, les BD et le graphique.
• Les threads et l'ordonnancement.
Travaux pratiques
Optimisation des programmes.
Les modèles alternatifs
• Les modèles asynchrones : JReact.
• Les modèles d'acteurs (Akka Actor4J...).
• Les modèles réactifs synchrones.
Outils dédiés au développement de programmes concurrents
• JConsole, jstack.
• La librairie JArmus.
• La logique temporelle de Lamport : TLA+.
• Les erreurs courantes : famine (contention), endormissement (dormancy), interblocage (deadlock), terminaison prématurée.

 

Fiche de la formation



 Cible :

Développeurs, architectes logiciels et chefs de projets.


 Prérequis :

Connaissances de base en Java et de l'utilisation d'un IDE (Eclipse, IntelliJ...).


 Durée : 4 jours

 Type : Stage pratique


 Contactez-nous