Utilisation d'ExecutorService basé sur le pool de threads JUC

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

Insérez la description de l'image ici

Étapes de mise en œuvre

  1. Créer un service de pool de threads
  2. 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.
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_31142237/article/details/115287418
conseillé
Classement