Projet Loom : des threads virtuels pour la JVM

Par:
fredericmazue

jeu, 17/03/2022 - 14:13

Parmi les nouveautés Java attendues pour 2022 figure le projet Loom. Loom veut révolutionner la programmation concurrente en Java en offrant offre une alternative plus légère aux threads ainsi que de nouvelles constructions de langage pour les gérer.

Les threads Java classiques s'appuient sur le système d'exploitation sous jacent, ce qui limite leur nombre à milliers d'instance simultanées. Loom introduit la notion de thread virtuel, appelé fibre, et abstrait du système d'exploitation. Un thread virtuel peut être lancé ainsi :

Thread.startVirtualThread(
  () -> {
    System.out.println("Hello World");
  }
);

Ceci n'est pas sans rappeler le langage Erlang, dédié à la programmation concurrente, et conçu par Ericson pour piloter des systèmes concurrents très chargés, notamment des systèmes de télécommunications. Avec ces threads virtuels à la Erlang, il deviendra possible d'instancier des millions de threads en Java.

Avec les threads virtuels, le projet apporte la continuation. Une continuation est une représentation abstraite de l'état de contrôle d'un programme informatique. Loom implémente des continuations à la fois pour étayer les fibres et pour exposer les fibres en tant qu'API publique que les développeurs peuvent utiliser dans les applications. En d'autres termes, une continuation permet au développeur de manipuler le flux d'exécution en appelant des fonctions.

Le développement de Loom est très actif. Il peut être suivi à partie de cette page d'Oracle. Il peut déjà être testé sur des JVM expérimentales

Les aspects techniques du projet Loom sont exposés dans cette proposition.