前言

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 详解 -- 执行器服务(线程池)相关推荐

  1. ScheduledThreadPoolExecutor()定时执行线程池详解,java线程池

    为什么80%的码农都做不了架构师?>>>    package com.dy.pool;import java.util.concurrent.ExecutorService; im ...

  2. 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)

    详解FTP服务完成Linux和WIN10之间的信息传输(实验详解) 一.FTP简介 1. FTP服务--用来传输文件的协议 2.端口 3.数据连接模式 二.相关配置 1.安装FTP服务 2.设置匿名用 ...

  3. linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式

    在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作. 在 pthread 库中有函数: pthread_t pthread_self(void); 它返回一个 pthrea ...

  4. 详解DNS服务、DNS解析、DNS劫持和污染

    简介 DNS(全称:Domain Name System,中文:域名系统)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.1 前言 要想弄清楚 D ...

  5. ORB-SLAM2代码详解09: 闭环线程LoopClosing

    pdf版本笔记的下载地址: ORB-SLAM2代码详解09_闭环线程LoopClosing,排版更美观一点,这个网站的默认排版太丑了(访问密码:3834) ORB-SLAM2代码详解09: 闭环线程L ...

  6. Java线程池七个参数详解:核心线程数、最大线程数、空闲线程存活时间、时间单位、工作队列、线程工厂、拒绝策略

    源码简介 ThreadPoolExecutor是JDK中的线程池实现,这个类实现了一个线程池需要的各个方法,它提供了任务提交.线程管理.监控等方法. 下面是ThreadPoolExecutor类的构造 ...

  7. OkHttp3源码详解(五) okhttp连接池复用机制

    1.概述 提高网络性能优化,很重要的一点就是降低延迟和提升响应速度. 通常我们在浏览器中发起请求的时候header部分往往是这样的 keep-alive 就是浏览器和服务端之间保持长连接,这个连接是可 ...

  8. JVM(1)之JVM的组成详解(字符串常量池+双亲委派机制+JIT即时编译......)

    以下总结自:<深入理解java虚拟机> + 宋红康老师视频 字节码文件介绍:深入理解JVM之Java字节码(.class)文件详解_Windy_729的博客-CSDN博客_字节码文件 JV ...

  9. 通过一张图详解微服务各个组件

    SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等.作为开发人员,我 ...

最新文章

  1. python语言格式化输出_Python format()格式化输出方法详解
  2. (五) 定点迭代法求根
  3. 实战派mysql高阶应用指南_MySQL高阶SQL语句(学会这些,让你对于数据库游刃有余)_Gengchenchen的博客-CSDN博客...
  4. kdj值应用口诀_KDJ买卖绝学!记住这些操作 精准判断quot;顶部和底部quot; 让你远离亏损...
  5. python读取所有txt文件_python如何批量读取txt文件
  6. ssm 异常捕获 统一处理_统一异常处理介绍及实战,看这篇就对了
  7. 电源纹波分析及测试方法
  8. 爬虫必备技能!开发者工具技巧总结
  9. MySQL笔记(五)索引 index
  10. 艺术创意灵感地---集设网 | 人体彩绘的张力
  11. Luogu P3373 【模板】线段树 2
  12. Air与java通信
  13. TC SRM683 Div1 250
  14. 模板建网站-开源工具
  15. python写的监视bt.ktxp.com的rss的小脚本 updated
  16. python 制作 多种 词云
  17. 张志华-统计机器学习
  18. 计算机网络的有线接入,台式电脑怎么连接有线网络
  19. 运营商大数据靶向短信,指定区域,定位发送,100%精准触达
  20. 【UE4 C++】 UE4 C++ 入门(无参考项目)——技术宅阿棍儿 学习笔记

热门文章

  1. 1999年中国省、自治区的城市规模结构特征的一些数据,可通过聚类分析将这些省、自治区进行分类_BeansSuperman_新浪博客
  2. Re:从零开始的鸿蒙开发教程
  3. 友盟社会化分享之判断是否安装了QQ、微信、新浪微博客户端
  4. EPICS记录参考5 -- 数组模拟输入记录Array Analog Input (aai)
  5. stm32驱动NRF24L01_原理+代码解析
  6. 最火Android开源项目LoopViewPage使用
  7. 谨赠20篇技术热文营造一个不一样的节日气氛!
  8. HTML、CSS面试题
  9. 国标GB/T28181流媒体服务器安防4G摄像头互联网直播EasyGBS如何实现H265网页直播的?
  10. 你还在靠“喂喂喂”来测语音通话质量吗,看完这篇文章你就能掌握正确姿势。