Blog de Jérôme Prudent
Développeur ...

Java Thread Pool

Vocabulaire

Généralités

En une phrase : Une thread pool contrôle un groupe de threads

Traduction : Groupe de processus légers partagés

Une thread pool est un design pattern utilisé dans des applications concurrentes. Un thread Java = un thread de l’OS. Trop de threads saturent une machine. La thread pool déporte cette complexité accidentelle de l’application.

Architecture

architecture

Le nombre de threads est limité.

L’appelant entasse ses tâche sur une file d’exécution (task queue).

Quand un thread est libre, il prend une tâche sur la file d’exécution et l’exécute.

Taxonomie

Différents paramètres définissent le type de threadpool

Généralement en java, on utilise un ExecutorService, qui implémente la logique de la thread pool. Il propose une fonction pour exécuter une tâche1 retournant un Future

Les ExecutorService les plus communs sont :

nom nb threads éviction planification
Single nb = 1 non non
Fixed nb = $N non non
Cached $N < nb < MAX > 60s d’inactivité non
Single Scheduled nb = 1 non oui
Scheduled $N < nb < MAX oui oui

Il est possible de personnaliser la thread pool2.

  1. Callable ou Runnable 

  2. Dirigiste est une implémentation d’ExecutorService