• 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. }

  • 相关阅读:
    论文解析——异构多芯粒神经网络加速器
    站群服务器 CentOS 搭建socks5多IP代理服务器详细教程,12个步骤教会你!
    并查集快速查找(Java 实例代码)
    一些并查集的题~~判树,连通,带权
    nacos
    JAVA优先级队列详解
    【C++】智能指针
    Kafka中的数据本身就是倾斜的,使用FlinkSQL该如何处理
    主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》
    第47节——使用bindActionCreators封装actions模块
  • 原文地址:https://blog.csdn.net/logtcm4/article/details/127886807