Introduction
Java est un langage concurrent et possède donc nativement toute une série de mécanisme permettant d'écrire des programmes concurrents, c'est-à-dire qui vont pouvoir exécuter plusieurs choses en même temps. Après un rappel sur le modèle de mémoire Java (tas, pile et environnement), ce chapitre aborde la notion de thread d'exécution. Il s'agit d'une entité représentant une partie de programme qui doit être exécutée en parallèle avec les autres tâches du programme.
En Java, il faut utiliser la classe Thread
pour créer un nouveau thread d'exécution et pour représenter les tâches à exécuter de manière concurrente, on va utiliser l'interface Runnable
. Ces classes et interfaces font toutes deux parties du package java.lang
, preuve en quelque sorte que Java a été conçu dès le départ comme un langage concurrent.
Pour bien comprendre toute la suite du tutoriel ainsi que l'utilisation précise des threads, il faut comprendre comment ceux-ci fonctionnent et comment la machine virtuelle Java décide quels sont les threads qui sont effectivement exécutés sur la machine à tout moment. Ce chapitre voit donc les notions d'états d'un thread et de scheduler (ordonnanceur) de threads.