1.线程池

1.1.线程池产生背景

1>.线程是一种系统资源,每创建一个新的线程都需要占用一定的内存(分配栈内存),在高并发场景下,某一时刻有大量请求访问系统,如果针对每个请求(任务)都创建一个新的线程,那么对内存的占用是相当大的,有可能还出现OOM(内存溢出),甚至会导致整个系统崩溃;

2>.线程的执行需要消耗CPU资源,由于计算机CPU核心数的有限的,如果在系统中创建了大量线程,那么就会有一部分线程在执行过程中无法获取到CPU执行权(/CPU时间片)而处于阻塞状态,从而引起线程上下文切换问题(保存线程的运行状态,下次运行时再恢复到之前的状态).线程上下文的频繁切换对系统性能也有很大的影响,尤其是在高并发环境下,频繁切换线程上下文反而会导致系统性能降低;

针对上述问题可以知道,系统中线程并不是创建的越多越好,而是需要一个容器将数量有限的线程管理起来,对这些线程进行复用(享元模式),以此来减少系统资源的占用.基于此,线程池应运而生;

1.2.线程池概述

线程池是指在初始化一个多线程应用程序过程中提供一个线程集合,在需要执行新的任务时重用这些线程而不是每次都新建一个线程,避免了创建和销毁线程的额外开销,提高响应速度.线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求.然而,增加可用线程数量是可能的.线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到线程池中并等待下一次分配任务;

***注意: 线程池中的线程都是非守护线程,不会随着主线程的结束而结束;

1.3.线程池特点

1.3.1.主要特点

1>.线程复用
2>.控制最大并发数
3>.管理线程

1.3.

共享模型之工具(一)相关推荐

  1. java并发编程(7) 共享模型之工具 - stampedLock、semaphore、CountdownLatch、CyclicBarri

    文章目录 前言 1. stampedLock 1. 概述 2. 代码 1. 读读 2. 读写 3. 注意 2. Semaphore 1. 基本使用 2. 应用场景 3. 原理 3. Countdown ...

  2. 共享模型之工具(二)

    1.自定义线程池 1>.在实际开发过程中建议不要使用JDK提供的方式创建线程池,因为底层不方便优化,在请求量非常大的情况下可能会出现OOM,我们需要手动实现一个线程池; 2>.代码实现: ...

  3. 6.JUC-共享模型之工具

    共享模型之工具 1 线程池 1. 自定义线程池 2. ThreadPoolExecutor 1) 线程池状态 2) 构造方法 3) newFixedThreadPool 4) newCachedThr ...

  4. 能力素质模型咨询工具(Part 2)

    核心能力素质模型数据库 1. 工作态度 通用 (1)热爱本职工作,对工作充满信心 (2)在没有明确的规定或领导指示的情况下,能够积极主动地承担职责范围内的各项工作,并能够积极地配合其他同事/部门工作 ...

  5. 面向大数据处理的数据流编程模型和工具综述

    点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...

  6. 并发编程(三)---共享模型之管程

    三.共享模型之管程 3.1临界区(Critical Section) 一个程序运行多个线程本身是没有问题的 问题出在多个线程访问共享资源 多个线程读取共享资源其实也没有问题 在多个线程对共享资源读写操 ...

  7. JUC笔记-共享模型之管程 (Monitor)

    JUC-共享模型之管程( Monitor) 一.线程安全问题(重点) 1.1 同步 1.2 线程出现问题的根本原因分析 1.3 synchronized 解决方案 1.3.1 同步代码块 1.3.2 ...

  8. DeepSpeed超大规模模型训练工具

    DeepSpeed超大规模模型训练工具 2021年 2 月份发布了 DeepSpeed.这是一个开源深度学习训练优化库,包含的一个新的显存优化技术-- ZeRO(零冗余优化器),通过扩大规模,提升速度 ...

  9. 开源 | IBM、哈佛共同研发:Seq2Seq模型可视化工具

    作者 | Ben Dickson 译者 | 刘旭坤 编辑 | Jane 出品 | AI科技大本营 近年来随着深度学习和神经网络技术的发展,机器翻译也取得了长足的进步.神经网络结构越来越复杂,但我们始终 ...

最新文章

  1. hadoop入门-在windows上编译x64位hadoop
  2. HandlerThread
  3. 【终极办法】Client does not support authentication protocol requested by server; consider upgrading mysql
  4. 这6种性格的人不适合做数据分析
  5. 《Python Cookbook 3rd》笔记(2.7):最短匹配模式
  6. 【数字图像处理】直方图均衡化详解及编程实现
  7. Android屏幕旋转时Activity不重新调用onCreate的方法
  8. mysql 清理表碎片需要停止数据库吗_Mysql的表的碎片清理
  9. Java基础:如何读取控制台输入?如何读取字符?
  10. java递归算法详解_Java递归算法详解(动力节点整理)
  11. 环保线绕电阻器的主要特性和应用分析
  12. 【word】复制到word的文字不能调整行间距(行间距过大)
  13. win7显示文件扩展名
  14. python之父996icu_Python之父声援中国程序员996ICU计划,Python要拒绝996公司?
  15. 通过经纬度计算两点直线距离的计算方法
  16. Unity中打开文件窗口(OpenFileDialog)的几种方法对比
  17. Nvidia-smi简介
  18. 做国外LEAD需要一些邮箱怎么办
  19. 万恶之源 - Python基础
  20. 手机直面屏与曲面屏有什么区别?,很多人都不知道

热门文章

  1. uni-app+uniCloud开发微信公众号H5网页如何使用云函数计算jssdk的签名,以及invalid signature 和 realUrl的问题
  2. 边缘计算产业链详解 | 内含赠书福利
  3. 2023年IT行业就业前景分析,准职场人必看
  4. 电脑关机后一直自动重启的各种原因与对应的解决方法
  5. jtdhrsgeagrshtd
  6. 日常英语,第66-70句
  7. 一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如,6的因子1,2,3而6 = 1+2+3,因此6是完数。编程序找出1000之内的所有完数
  8. 冬至|岁寒隆冬至,煮饺话团圆!
  9. 风柔月清,吾爱在浅秋
  10. cf Educational Codeforces Round 43 E. Well played!