线程池的优势:
线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。
它的主要特点为:
1.线程复用;
2.控制最大并发数;
3.管理线程。
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的销耗。
第二:提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行。
第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会销耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

创建线程池

三种创建线程的方式

  1. ExecutorService threadPool = Executors.newFixedThreadPool(5);
    一池五个工作线程,类似银行五个受理窗口

  2. ExecutorService threadPool = Executors.newSingleThreadExecutor();

    一池一个工作线程,类似银行一个受理窗口

  3. ExecutorService threadPool = Executors.newCachedThreadPool();

一池N个工作线程,类似银行N个受理窗口 可缓存,比如你当前只有一个人,就只有一个线程,如果当前三个人,里面就有三个线程 可扩展

但是一般开发中不会用这些方式,所以需要自定义线程

ThreadPoolExecutor
它有七大参数
1、 corePoolSize:线程池中的常驻核心线程数
2、maximumPoolSize:线程池中能够容纳同时执行的最大线程数,此值必须大于等于1
3、 keepAliveTime:多余的空闲线程的存活时间当前池中线程数量超过corePoolSize时,当空闲时间达到keepAliveTime时,多余线程会被销毁直到
只刺下corePoolSize个线程为止
4、 unit: keepAliveTime的单位
5、workQueue:任务队列,被提交但尚未被执行的任务
6、threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程,一般默认的即可
7、handler:拒绝策略,表示当队列满了,并且工作线程大于等于线程池的最人线程数(maximumPoolSize)时如何来拒请求执行的runnable的策略

线程池三种创建方式和自定义线程池ThreadPoolExecutor相关推荐

  1. 线程的三种创建方式和他们的优缺点

    文章目录 一.线程的三种创建方式 1.继承Thread 2.实现Runable接口 3.实现Callable接口 二.三种创建方式的优缺点 1.使用Runnable接口比使用继承Thread的优势 2 ...

  2. 线程的三种创建方式以及代码实现

    线程和进程的概念 一个进程可以有多个线程 程序:是指令和数据的有序集合(静态的) 进程:是执行程序的一次执行过程(动态的),是系统资源分配的单位.在操作系统中运行的程序就是进程. 通常在一个进程中可以 ...

  3. java线程的任务的三种创建方式,严格地说,就一种,就是如何重写Runnable接口的run()方法

    仅简单演示Java中线程任务的三种创建方式 第一种:使用了适配器模式,有返回值,能抛出异常,任务代码写在Callable.call()方法中,Runnable的run方法会通过适配器调用到Callab ...

  4. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  5. 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)

    五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...

  6. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  7. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

    图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数,必须使用reverse解析. choices用法 使用场景:能列举完全的数据 #使用方法:xxx_cho ...

  8. Servlet 的三种创建方式

    Servlet 创建有三种方式. 1.实现 Servlet 接口 因为是实现 Servlet 接口,所以我们需要实现接口里的方法. 下面我们也说明了 Servlet 的执行过程,也就是 Servlet ...

  9. Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...

    数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...

最新文章

  1. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
  2. GDI+ 学习记录(10): 线性渐变画刷 - LinearGradientBrush
  3. 深入浅出React Native 1: 环境配置
  4. c#中datagridview里checkbox的使用方法[转]
  5. Fastdfs分布式文件系统的应用
  6. c语言 pdf支持库,解决支持库版本兼容问题:引入包时候support包有红色下划线
  7. LRC软件测试简历,C语言 LRC歌词文件解析
  8. android 模拟器 itools,itools安卓模拟器
  9. CDISC SDTM AE domain学习笔记 - 1
  10. b站缓存的.blv和.m4s视频文件格式转换
  11. 学好英语,才能当个好程序员,英语基础语法总结
  12. 开心网(http://www.kaixin001.com)的一些JS代码分享
  13. 从此甩掉光驱 U盘安装系统最详攻略
  14. Ubuntu 机箱前置音频接口不能用的解决方法
  15. 汉字编码问题(附编码察看器)
  16. 高级软件工程第九次作业:东理三剑客团队作业-随笔6
  17. 线程wait和notify方法
  18. httpclient3.0调用basic auth接口
  19. python显示给定数字因数分解_Python练习题 010:分解质因数
  20. 论大学生能参加的比赛,看这一篇文章就够了

热门文章

  1. 30 PP配置-生产车间控制-定义计划策略
  2. 50 FI配置-财务会计-固定资产-与总账集成-定义集成资产购置的技术清算科目
  3. ubuntu升级python_Ubuntu 系统下可以做什么?——拥抱自由和安静
  4. python:文件打包为exe
  5. Pytorch之Variable与tensor--它封装了Tensor,并整合了反向传播的相关实现,像装糖果(糖果就是数据即tensor)的盒子
  6. tsc - error TS2304 Cannot find name 'Set'/'Promise'
  7. 引入Vant-UI全部组件的代码 - (备份)
  8. phpcms v9宽字节注入问题
  9. Topsky酒店管理系统v1.4.2.3
  10. 用python计算列表元素之和_python实现计算列表元素之和