Threads Virtual, Programmation Structurée et Scoped Values : état du projet Loom en Java 21 et 22

Séminaire

  • Filière :

    Développement logiciel

  • Sous-filière :

    Java & XML

  • Référence

    TVPS-JW

  • Durée

    1 jour (7 h)

  • Prix unitaire HT

    Sur demande

Description

Java propose un modèle de programmation concurrente intégré à son API depuis ses toutes premières versions. Deux évolutions majeures ont eu lieu depuis l’introduction de la classe Thread et du mot-clé synchronized : l’ajout de l’API java.util.concurrent en Java 5, puis le framework Fork / Join et l’API CompletableFuture en Java 8. Une troisième évolution a eu lieu en Java 21, avec l’ajout des threads virtuels, qui autorisent un modèle alternatif à la programmation réactive. A l’issue de cette journée, vous saurez précisément comment les threads virtuels fonctionnent, dans quel contexte vous pouvez les utiliser, et comment vous pouvez les utiliser pour améliorer vos applications concurrentes et réactives.

Ce séminaire est accessible également à travers le parcours de formation Ox’days.
>> Pour savoir plus sur les Ox’days

Objectifs pédagogiques

  • Savoir comment les threads virtuels fonctionnent
  • Dans quel contexte les utiliser
  • Comment vous les utiliser pour améliorer les  applications concurrentes et réactives

Public cible

Architectes et développeurs désireux de comprendre les problèmes posés par la programmation réactive, et les solutions apportés par les threads virtuels

Pré-requis

Notions de programmation concurrente (thread, race condition, synchronisation), notions de programmation réactive (CompletableFuture ou toute autre API).

Modalités d’évaluation

Questionnaire de fin de formation

Programme de la formation

  • Les threads virtuels
    1. comment optimiser le nombre de traitements par seconde des applications : programmation réactive et threads virtuels
    2. patterns de création de threads virtuels
    3. comment fonctionnent-ils, quel est leur coût en mémoire et quelles sont leurs performances
  • La programmation concurrente structurée, centrée sur la classe StructuredTaskScope :
    1. en quoi la programmation concurrente structurée règle-t-elle le problème des threads perdus
    2. comment fonctionne cet objet
    3. son utilisation pour lancer des tâches asynchrones
    4. ses modèles alternatifs : fermeture sur le premier résultat, fermeture sur la première erreur
    5. comment l’étendre pour exploiter les résultats de ces tâches
    6. gestion des timeout et de la fermeture de cet objet
  • Les variables ScopedValue
    1. pourquoi a-t-on besoin du modèle de variables ThreadLocal
    2. en quoi ce modèle est-il difficilement adaptable à la programmation réactive
    3. problèmes du modèle de variables ThreadLocal
    4. fonctionnement des variables ScopedValue
    5. utilisation dans des cas réels

Programme mis à jour le