ExecutorService 详解 -- 执行器服务(线程池)
前言
ExecutorService是Java提供的线程池,也就是说,每次我们需要使用线程的时候,可以通过ExecutorService获得线程。它可以有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞,同时提供定时执行、定期执行、单线程、并发数控制等功能,也不用使用TimerTask了。
1、线程池是为了避免服务端大量线程的创建和销毁而造成资源的浪费
2、线程池创建好之后,开始的时候里面不包含任何线程
3、在线程池创建的时候,要指定它包含的线程数量
4、当线程池中的线程没有达到指定数量的时候,那么每一个请求都会创建一个新的线程来处理
5、核心线程用完之后,不会被销毁,而是会还回线程池等待下一个请求
6、当核心线程全部被占用,那么后来的请求会被放入工作队列中
7、工作队列本质上是一个阻塞式队列
8、当工作队列也被用满,那么后来的更多请求会被线程池中创建出来的临时线程处理
9、临时线程用完之后,不会立即销毁,而是会存活指定的一段时间后才会被销毁
10、如果临时线程全部被占用,后来的线程要么被阻塞,要么交给拒绝处理器来进行拒绝
ExecutorService 的创建方法(自定义)
核心参数
工作流程
常用线程池
缓存线程池 – newCachedThreadPool(Java定义好的线程池)
ExecutorService es = Executors.newCachedThreadPool();
使用场景:适用于大量的短任务场景,或者大量高并发,一定不适合用于长任务场景,导致服务器承载大量的线程甚至于导致服务器的崩溃。
特点:
1、没有核心线程
2、全部都是临时线程
3、临时线程数量为Integer.MAX_VALUE
4、临时线程存活时间较短,为1分钟
5、工作队列是一个同步队列
固定线程数的线程池-- newFixedThreadPool(int threadsNum) (Java定义好的线程池)
ExecutorService es = Executors.newFixedThreadPool(20);
使用场景:大量的长任务场景,不适合短任务场景,会导致短任务的耗费时间偏长
特点:
1、需要指定核心线程数量
2、全部都是核心线程,没有临时线程
3、工作队列为阻塞式链式队列,存储无限多个任务
ExecutorService 详解 -- 执行器服务(线程池)相关推荐
- ScheduledThreadPoolExecutor()定时执行线程池详解,java线程池
为什么80%的码农都做不了架构师?>>> package com.dy.pool;import java.util.concurrent.ExecutorService; im ...
- 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)
详解FTP服务完成Linux和WIN10之间的信息传输(实验详解) 一.FTP简介 1. FTP服务--用来传输文件的协议 2.端口 3.数据连接模式 二.相关配置 1.安装FTP服务 2.设置匿名用 ...
- linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式
在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作. 在 pthread 库中有函数: pthread_t pthread_self(void); 它返回一个 pthrea ...
- 详解DNS服务、DNS解析、DNS劫持和污染
简介 DNS(全称:Domain Name System,中文:域名系统)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.1 前言 要想弄清楚 D ...
- ORB-SLAM2代码详解09: 闭环线程LoopClosing
pdf版本笔记的下载地址: ORB-SLAM2代码详解09_闭环线程LoopClosing,排版更美观一点,这个网站的默认排版太丑了(访问密码:3834) ORB-SLAM2代码详解09: 闭环线程L ...
- Java线程池七个参数详解:核心线程数、最大线程数、空闲线程存活时间、时间单位、工作队列、线程工厂、拒绝策略
源码简介 ThreadPoolExecutor是JDK中的线程池实现,这个类实现了一个线程池需要的各个方法,它提供了任务提交.线程管理.监控等方法. 下面是ThreadPoolExecutor类的构造 ...
- OkHttp3源码详解(五) okhttp连接池复用机制
1.概述 提高网络性能优化,很重要的一点就是降低延迟和提升响应速度. 通常我们在浏览器中发起请求的时候header部分往往是这样的 keep-alive 就是浏览器和服务端之间保持长连接,这个连接是可 ...
- JVM(1)之JVM的组成详解(字符串常量池+双亲委派机制+JIT即时编译......)
以下总结自:<深入理解java虚拟机> + 宋红康老师视频 字节码文件介绍:深入理解JVM之Java字节码(.class)文件详解_Windy_729的博客-CSDN博客_字节码文件 JV ...
- 通过一张图详解微服务各个组件
SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等.作为开发人员,我 ...
最新文章
- python语言格式化输出_Python format()格式化输出方法详解
- (五) 定点迭代法求根
- 实战派mysql高阶应用指南_MySQL高阶SQL语句(学会这些,让你对于数据库游刃有余)_Gengchenchen的博客-CSDN博客...
- kdj值应用口诀_KDJ买卖绝学!记住这些操作 精准判断quot;顶部和底部quot; 让你远离亏损...
- python读取所有txt文件_python如何批量读取txt文件
- ssm 异常捕获 统一处理_统一异常处理介绍及实战,看这篇就对了
- 电源纹波分析及测试方法
- 爬虫必备技能!开发者工具技巧总结
- MySQL笔记(五)索引 index
- 艺术创意灵感地---集设网 | 人体彩绘的张力
- Luogu P3373 【模板】线段树 2
- Air与java通信
- TC SRM683 Div1 250
- 模板建网站-开源工具
- python写的监视bt.ktxp.com的rss的小脚本 updated
- python 制作 多种 词云
- 张志华-统计机器学习
- 计算机网络的有线接入,台式电脑怎么连接有线网络
- 运营商大数据靶向短信,指定区域,定位发送,100%精准触达
- 【UE4 C++】 UE4 C++ 入门(无参考项目)——技术宅阿棍儿 学习笔记
热门文章
- 1999年中国省、自治区的城市规模结构特征的一些数据,可通过聚类分析将这些省、自治区进行分类_BeansSuperman_新浪博客
- Re:从零开始的鸿蒙开发教程
- 友盟社会化分享之判断是否安装了QQ、微信、新浪微博客户端
- EPICS记录参考5 -- 数组模拟输入记录Array Analog Input (aai)
- stm32驱动NRF24L01_原理+代码解析
- 最火Android开源项目LoopViewPage使用
- 谨赠20篇技术热文营造一个不一样的节日气氛!
- HTML、CSS面试题
- 国标GB/T28181流媒体服务器安防4G摄像头互联网直播EasyGBS如何实现H265网页直播的?
- 你还在靠“喂喂喂”来测语音通话质量吗,看完这篇文章你就能掌握正确姿势。