• 多线程-生产者消费者问题、线程池(第二十天)


    注意:本博客仅用于记录自己的学习日常,不存在与其他用途

    为什么需要线程池

            1.使用线程池可以重复利用已有的线程继续执行任务,避免线程在创建和销毁时造成消耗

            2.由于没有线程创建和销毁时的消耗,可以提高系统响应速度

            3.通过线程池可以对线程进行合理的管理,根据系统的承受能力调整运行线程数量的大小

     线程池相关的内容:

    ThreadPoolExecutor(控制线程数量)

            newCachedThreadPool:线程数可以多

            newFixedThreadPool:自己设置线程数

            newSingleThreadExecutor:单个线程

    ScheduledThreadPoolExecutor(控制访问时间)

            newScheduledThreadPool:

                    schedule延迟多久执行、scheduleAtFixedRate控制每多久执行

    线程池的生命周期:

            运行状态-->过度状态(shutdown/stop  -->  tidying )-->终止状态

            RUNNING:能接受新提交的任务,并且也能处理阻塞队列中的任务。

            SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保存的任务。

            STOP:不能接受新任务,也不出列队列中的任务,会中断正在处理任务的

            TIDYING:如果所有的任务都已终止了,workerCount(有效呈数)为0,线程池进入该状态后刽周用terminated()方法进入TERMINATED状态。

            TERMINATED:在Eterminated()方法执行完后进入该状态,默认terminated()方法中什么也没有做

            阻塞队列:

            ArrayBlockingQueue

            LinkedBlockingQueue

            DelayQueue

            PriorityBlockingQueue

            SynchronousQueue

  • 相关阅读:
    数据结构和算法(10):B-树
    docker入门配置
    【YOLOv7】主要改进点详解
    C# IOC注入示例
    Leetcode 93. Restore IP Addresses
    [C++ 网络协议] 套接字和标准I/O
    Linux常用操作集合(三)
    深入浅出的算法设计与分析技巧解读(软件设计师笔记)
    Day 85:网络构建 (代码抄写)
    【JVM】对象死亡判断
  • 原文地址:https://blog.csdn.net/qq_58000413/article/details/126700533