线程池

概念

多个线程的组合,但是总数量不会超出池子的限制。是多执行流并发/并行处理,每当任务到来都会从池子里取出一个空闲的线程去进行处理。

产生原因

  1. 线程若是不限制数量的创建,在峰值的压力下,线程创建过多,会导致系统资源耗尽,所以创建线程池来约束线程数量。
  2. 处理一个线程的总时间(T) = 创建线程的时间(T1) + 任务的处理时间(T2) + 销毁线程的时间(T3) , 若是 T2/T 所占比不够高的话会造成大量的时间浪费,所以创建线程池来统一创建和销毁线程,节约了时间成本,提高了效率。

构成

  1. 线程管理池(ThreadPool):用于创建并管理线程池,有创建,销毁,添加新任务;
  2. 工作线程(PoolWorker):线程池中的线程在没有任务的时候处于等待状态,可以循
    环的执行任务;
  3. 任务接口(Task):每个任务必须实现接口,用来提供工作线程调度任务的执行,规定了任务的入口以及执行结束的收尾工作和任务的执行状态等;
  4. 任务队列:用于存放没有处理的任务,提供一种缓存机制。

自主编写线程池

由于线程的入口函数都是在创建线程的时候就已经固定导入的,所以在其进行任务处理的时候处理方式过于单一,显得不灵活。为了解决这种情况,所以规定在传递处理任务的时候除了传递任务数据之外还需要传递任务的处理方式的接口,这样的话,线程池就只需要跟着传递过来的接口去处理任务了,根据处理方式接口的不同,处理方式也就不同了,线程池不再需要关系数据和处理方式,这样就大大提高了线程池的灵活性和工作效率。

几个常见问题

  1. STL中的容器是不是都是线程安全的?(不是,STL容器只保证性能,不保证安全)
  2. 智能指针是不是都是线程安全的?(unique_ptr是局部操作/shared_ptr是原子操作,所以不涉及线程安全)

线程池的代码演示


Linux下线程池概念详解以及代码演示相关推荐

  1. python线程池原理_Python定时器线程池原理详解

    这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定时器执行循环任务: 知识储备 Timer(int ...

  2. linux下top命令参数详解

    linux下top命令参数详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. 内存信息.内容如下: ...

  3. async spring 默认线程池_Spring boot注解@Async线程池实例详解

    这篇文章主要介绍了Spring boot注解@Async线程池实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从Spring3开始提供了@A ...

  4. linux proc目录作用,Linux下的proc目录详解

    Linux下的proc目录详解 [复制链接] 文章结构: 1.什么是proc目录 2. 初识proc目录 3. 从proc窥看系统详情 1.什么是proc目录 proc是Linux系统下一个很重要的目 ...

  5. Java线程池ThreadPool详解

    Java线程池ThreadPool详解 1. 线程池概述 1.1 线程池简介 1.2 线程池特点 1.3 线程池解决问题 2. 线程池原理分析 2.1 线程池总体设计 2.6 线程池流转状态 2.2 ...

  6. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  7. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  8. linux输入一个用户看是否在工作,linux下的用户管理详解

    linux下的用户管理详解 useradd 命令详解 添加用户 想要对linux下面的帐号了解的话首先必须要了解的4个配置文件[root@localhost /]# cat /etc/passwd 首 ...

  9. Linux下find命令用法详解

    Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...

最新文章

  1. 浙大开源 | VID-Fusion: 用于精确外力估计的鲁棒视觉惯性动力学里程计
  2. Cassandra 处理客户端请求
  3. Code片段 : .properties属性文件操作工具类 JSON工具类
  4. OC学习7——类别、扩展和协议
  5. IDEA 一直不停的scanning files to index解决办法
  6. C语言 数据结构 二叉树实现、二叉树的三种递归遍历
  7. apache beam_Apache Beam ML模型部署
  8. 信息学奥赛一本通(1223:An Easy Problem)
  9. 书摘—智能主义:未来商业与社会的新生态
  10. 最小生成树之普里姆算法
  11. 查找文件命令find和文件内容查找命令grep
  12. 《LoadRunner虚拟用户开发指南》写作心语
  13. 皮卡智能2022年功能升级汇总,打造智能工作新体验
  14. DAO、DTO、PO、POJO、BO、VO、AO基本概念
  15. 审计署计算机中级考试blog,代码审计篇
  16. 【PTA】代码部分基础整理
  17. 启动容器后,即便映射了端口,使用docker ps 命令查看,ports列也是空
  18. 【LaTex】3.2 数据结构(TikZ)
  19. 【404 App】2.0全新版本正式来袭之ALL模块。
  20. EEROM和FRAM写入速度比较

热门文章

  1. 系统试运行报告是谁写的_深圳个人信用报告查询系统入口https://ipcrs.pbccrc.org.cn/...
  2. C++图像处理OpenCV之屠龙宝刀第11篇 —— opencv_contrib(OpenCV贡献库)
  3. 使用win32com来实现outlook的自动发送
  4. 2019中国科大夏令营机试
  5. Balsamiq Mockups的使用
  6. MMdetection绘制mAP-自用
  7. 入驻csdn的自我介绍
  8. 基建不再是架桥铺路,“新基建”正星火驰援行业的数字化转型
  9. meta标签(以京东首页为例)
  10. [2016 NUIST 程序设计竞赛] D. 达朗贝尔的台阶