• 21、池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)


    池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)

    1. 池化技术:事先准备好一些资源,有需要用就拿,用完再还回来

     

    1. 线程池的好处:

    *降低资源的消耗:线程的不停的创建销毁会十分浪费资源

    *提高响应的速度

    *方便管理

    线程复用,可以控制最大并发数,以及管理线程

     

    1. 线程池的学习路线:(三大方法,7大参数,4种拒绝策略)

    第一步:三大方法(线程池的三大方法(Exector工具类下有三大方法))

    阿里巴巴规范:(线程池最好使用ThreadPoolExecutor,而不是Executors)

    方法1、单个线程(创建只有一个单个线程的线程池方法)

    !!!使用线程池后就要用线程池来创建线程(线程池的.execute()),线程池使用完后,程序结束,还必须要关闭线程池(.shutdown)(如何确保程序一定结束(放到finally咯))

     

    只有一个线程在操作

     

    方法2、线程池有固定数的多个线程(也就是有多个并发)

     

    有5个线程在执行了

     

    方法3、线程池的线程随着我们并发的线程多少来增加

     

    可以看到最多有30个并发线程了

     

    1. package org.example.threadpoolexecutor;
    2. import java.util.concurrent.ExecutorService;
    3. import java.util.concurrent.Executors;
    4. public class TestThreadPoolExecutorThere {
    5.     public static void main(String[] args) {
    6. //        ExecutorService threadPool = Executors.newSingleThreadExecutor();//单个线程的线程池
    7. //        ExecutorService threadPool = Executors.newFixedThreadPool(5);//设定固定线程个数的线程池
    8.         ExecutorService threadPool = Executors.newCachedThreadPool();//可以随着使用的线程个数变化而而变化的线程池
    9.         try {
    10.             for (int i = 1; i <=100 ; i++) {
    11.                     threadPool.execute(()->{
    12.                         System.out.println(Thread.currentThread().getName()+"=>ok");
    13.                     });
    14.             }
    15.         } catch (Exception e) {
    16.             throw new RuntimeException(e);
    17.         } finally {
    18.             threadPool.shutdown();
    19.         }
    20.     }
    21. }

  • 相关阅读:
    简单几个方法教你怎么把PDF压缩小,试试你就知道
    【IO】文件操作基础知识
    Dockerfile 详细教程
    linux ld 链接器学习笔记
    深度学习——(6)pytorch冻结某些层的参数
    适用于C/C++开发人员的HOOPS
    自定义mvc原理和框架实现
    hadoop基础之MapReduce的学习
    讯飞开放平台--星火认知大模型--开发技术文档--js实例代码详解
    CAD(计算机辅助设计)软件的开发框架
  • 原文地址:https://blog.csdn.net/logtcm4/article/details/127886807