Threads Linux, Virtual Threads Java : Pourquoi Loom change tout (et comment bien les utiliser)
“100 000 threads en Java ? Impossible !” C’est ce que j’entends souvent. Pourtant, depuis Java 21, c’est devenu réalité grâce aux Virtual Threads (projet Loom).
On ne sait vraiment où on va que quand on sait d’où l’on vient.
C’est pourquoi j’ai décidé, pour comprendre pourquoi c’est révolutionnaire, de ré-aborder les bases avec vous : qu’est-ce qu’un thread, au juste ?
Et histoire de replonger dans les entrailles de la machine, un peu d’assembleur sera nécessaire, car oui même le C nous cache des choses ! Si vous pensiez que C était un langage de bas niveau vous allez être déçu. Mais ne vous en faites pas, je vais essayer de rendre cela le plus digeste possible.
Et donc nous répondrons à la question qu’et-ce un thread ?
Spoiler : ce n’est ni une unité de calcul, ni une magie noire. C’est bien plus simple (et bien plus malin) que ça.
Dans cet article, nous allons :
- Plonger dans les entrailles du processeur (asm x86 linux, registres, pile,
RIP,RSP…). - Comprendre comment Linux gère les threads (
clone(),context switch…). - Revoir comment Java s’accomodait des threads jusqu’à Java 21
- Voir pourquoi Java 21 change la donne avec les Virtual Threads.
- Illustrer avec des exemples concrets en Java.
Prêt ? C’est parti.