Maison  >  Article  >  Java  >  Qu'est-ce que le pool de threads Java

Qu'est-ce que le pool de threads Java

(*-*)浩
(*-*)浩original
2019-12-04 09:28:192887parcourir

Qu'est-ce que le pool de threads Java

Qu'est-ce que le pool de threads de Java, quels sont ses types et quelles sont leurs fonctions                                                                                         >)

Le pool de threads est une forme de traitement multithread. Les tâches sont ajoutées à la file d'attente pendant le traitement, puis ces tâches sont automatiquement démarrées après la création des threads. Chaque thread utilise la taille de pile par défaut pour s'exécuter avec la priorité par défaut et dans un. appartement multithread, si un thread est inactif dans le code managé, le pool de threads insérera un autre thread de travail pour garder tous les processeurs occupés.

Si tous les pools de threads restent occupés à tout moment, mais que les files d'attente contiennent du travail en attente, le pool de threads ne dépassera jamais le nombre maximum de threads de travail après un certain temps. Les threads qui dépassent le maximum peuvent être mis en file d'attente, mais ils ne peuvent pas être démarrés tant que les autres threads n'ont pas terminé.

L'interface de niveau supérieur du pool de threads en Java est Executor. Executor n'est pas un pool de threads, mais juste un outil pour exécuter des threads, et le véritable pool de threads est ExecutorService.

Que sont les pools de threads en Java ?

1.newCachedThreadPool crée un pool de threads pouvant être mis en cache

2.newFixedThreadPool crée un pool de threads de longueur fixe

3.newScheduledThreadPool crée un pool de threads de longueur fixe

4.newSingleThreadExecutor crée un pool de threads monothread

Les éléments suivants sont analysés un par un :

newCachedThreadPool,

est a Un pool de threads avec un nombre variable de threads et son nombre maximum de threads est Integer.MAX_VALUE. Ce nombre est très grand. Un pool de threads pouvant être mis en cache dépasse les besoins de traitement, les threads inactifs peuvent être recyclés de manière flexible. . S'il n'y a pas de recyclage, créez un nouveau fil de discussion. Toutefois, les threads inactifs dans le pool de threads ont des limites de délai d'expiration. Ce délai est de 60 secondes. Si les threads inactifs dépassent 60 secondes, ils seront recyclés. L'appel d'execution réutilisera le thread précédemment construit (si le thread est disponible). Ce type de pool de threads est plus adapté à l'exécution d'un grand nombre de tâches moins chronophages. Lorsque l'ensemble du pool de threads est inactif, les threads du pool de threads expirent et sont arrêtés.

newFixedThreadPool

Crée un pool de threads avec un nombre spécifié de threads de travail. Un thread de travail est créé chaque fois qu'une tâche est soumise. Lorsque les threads sont inactifs, ils ne seront recyclés que si le thread est soumis. Le pool est fermé et si le nombre de threads de travail atteint le nombre maximum initial de pools de threads, les tâches soumises sont stockées dans la file d'attente du pool (sans limite de taille). Étant donné que newFixedThreadPool n'a que des threads principaux et que ces threads principaux ne seront pas recyclés, il peut répondre plus rapidement aux demandes externes.

newScheduledThreadPool

Créez un pool de threads avec un nombre fixe de threads principaux, mais un nombre illimité de threads non principaux, et ils seront recyclés immédiatement lorsqu'ils sont inactifs. Les commandes peuvent être planifiées. à exécuter après un délai donné ou périodiquement. Ce type de pool de threads est principalement utilisé pour exécuter des tâches planifiées et des tâches récurrentes avec une période fixe.

newSingleThreadExecutor

Ce type de pool de threads n'a qu'un seul thread principal à l'intérieur et exécute le thread dans une file d'attente illimitée. Cela élimine le besoin de gérer les problèmes de synchronisation des threads entre ces tâches. toutes les tâches sont exécutées séquentiellement sur le même thread, et pas plus d'un thread ne peut être actif à un moment donné.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn