Orsys

Java, programmation multithread

Par Orsys

Objectifs

  • Maîtriser les modèles de programmation multithread et les librairies standards correspondantes
  • Connaître les principales structures de données adaptées à la programmation multithread
  • Connaître les principaux bugs et avoir un aperçu des solutions
  • Connaître les outils de test et débogage
  • Comprendre les liens entre la programmation multithread et les performances

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, ExecutorService, Future…).
  • 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, 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.
  • 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.

PDF

Imprimer

Envoyer

Envoyer la page à :

Programme

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, ExecutorService, Future…).
  • 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, 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.
  • 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.

Formations de la même catégories (5)

M2i Formation
Sécurité applicative JavaPar M2i Formation
  • Connaître les mécanismes de sécurité du JDK
  • Comprendre les principales failles de sécurité applicative
  • Distinguer sécurité applicative et sécurité réseau
  • Mettre en oeuvre les principales stratégies de sécurité en Java
  • Utiliser Java Cryptography Extension (JCE)
  • Authentifier et autoriser l'accès aux composants Java EE.
Dawan
JSF + AJAXPar Dawan

Apprendre à utiliser JSF - Découvrir l'essentiel des possibilités de ce Framework - Construire des applications AJAX/JSF

SQLI Institut
Bachotage Java - Certified JAVA SE8 ProgrammerPar SQLI Institut
  • Comprendre comment se déroule une certification Java
  • Garantir le taux de réussite maximal à la certification Java, niveau 1 développeur (1Z0-808)
  • Faire usage de l'ouvrage de référence afin de passer sereinement l'examen
M2i Formation
Approche fonctionnelle avec Java 8Par M2i Formation
  • Analyser les situations de projets Java où la programmation fonctionnelle est globalement supérieure à la programmation objet
  • Comprendre les bases de la programmation fonctionnelle pour pouvoir l'appliquer dans vos projets
  • Savoir écrire des expressions lambda simples et complexes
  • Comprendre la notion d'interface fonctionnelle
  • Exploiter les streams.
M2i Formation
IoT - Développer des applications connectées avec JavaPar M2i Formation
  • Programmer efficacement en Java pour la technologie IoT.
Nous utilisons les cookies afin de fournir les services et fonctionnalités proposés sur notre site et afin d’améliorer l’expérience de nos utilisateurs. En cliquant sur ”J’ai compris”, vous acceptez l’utilisation de ces cookies.