Utilisation d'ExecutorService basé sur le pool de threads JUC
Le but du multithreading est souvent d'améliorer l'efficacité du programme et d'améliorer la convivialité du système. Mais la création et la destruction fréquentes de fils sont en soi une chose préjudiciable. Le JUC de Java fournit donc l'utilisation de pools de threads.
Pool de threads: créez plusieurs threads à l'avance et placez-les dans le pool de threads, récupérez-les directement lorsque vous les utilisez et remettez-les dans le pool de threads après les avoir utilisés. Cela peut éviter la création et la destruction fréquentes de threads et réaliser une réutilisation.
avantage:
- Amélioration de l'efficacité de la réponse (réduction du temps de création du thread)
- Réduire la consommation de ressources (réutiliser les threads dans le pool de threads, ne plus créer)
- Facile à gérer.
corePoolSize: taille
maximale du
pool de basePoolSize: nombre maximum de threads keepAliveTime: combien de temps le thread s'arrêtera-t-il après qu'il n'ait pas de tâches
JDK5.0 fournit des API de pool de threads associées: Executors et ExecutorService
L' interface réelle du pool de threads d' ExecutorService hérite de la
classe d'implémentation commune ThreadPoolExecurtor d' Executor .
- void executor (exécutable) Le pool de threads démarre le thread. (Appartenant à la méthode de classe Executor)
- void shutdown () Ferme le pool de connexions (méthode d'interface ExecutorService) Classe d'outils
Executors , classe de fabrique de pool de threads, utilisée pour créer et renvoyer différents types de pools de threads. Faites attention à distinguer l' exécuteur
Étapes de mise en œuvre
- Créer un service de pool de threads
- Fil d'exécution
atteindre:
// 线程类
static class ThreadTest implements Runnable{
public void run() {
System.out.println(Thread.currentThread().getName()+":执行了");
}
}
// 执行类
public static void main(String[] args) {
// 创建线程服务,构造线程池为3
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 启动线程
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
}
Résultat: le pool de threads est défini sur 3, puis 4 threads utilisent 3 threads dans le pool de threads.