Rappel sur le modèle de mémoire Java
Avant de pouvoir découvrir comment écrire des applications concurrentes en Java, il faut vous rappeler comment fonctionne un programme séquentiel et comment est gérée la mémoire en Java. On va donc rapidement revoir les différents concepts qui ont été vus dans le chapitre 6 du tutoriel principal.
Environnement, tas et pile
Il y a donc trois entités en mémoire : des environnements, une pile et un tas. À tout moment, une méthode est en cours d'exécution dans le programme. À cette méthode est associé un environnement qui va contenir toutes les variables locales à la méthode et la référence this
pour les méthodes d'instance. Il y a ensuite le tas qui va contenir toutes les instances des objets créées dans le programme. Ce dernier est unique, contrairement aux environnements qui existeront pour chaque méthode en cours d'exécution. Lorsqu'une méthode appelle une autre, un nouvel environnement va donc être créé pour la méthode appelée tandis que l'ancien doit être conservé pour être à nouveau utilisé lorsque le contrôle reviendra à la méthode appelante. Il y a donc une pile d'environnements qui permet de gérer les appels de méthode.
Prenons un exemple pour se remémorer ces différentes entités de la mémoire :