java线程池【转】
Executor是一个顶层接口,在它里面只声明了一个方法execute(Runnable),返回值为void,参数为Runnable类型,
从字面意思可以理解,就是用来执行传进去的任务的;
然后ExecutorService接口继承了Executor接口,并声明了一些方法:submit、invokeAll、invokeAny以及shutDown等;
抽象类AbstractExecutorService实现了ExecutorService接口,基本实现了ExecutorService中声明的所有方法;
然后ThreadPoolExecutor继承了类AbstractExecutorService。
Executors这个工具类中提供了如下静态方法:
- Executors.newCachedThreadPool() 无限大小的线程池,线程会自动重用
- Executors.newFixedThreadPool(int) 固定线程数的线程池
- Executors.newSingleThreadExecutor() 单线程执行器
按照Executors类中的几个工厂方法,分别使用的是:
- LinkedBlockingQueue。FixedThreadPool和SingleThreadExecutor使用的是这个BlockingQueue,队列长度是无界的,适合用于提交任务相互独立无依赖的场景。
- SynchronousQueue。 CachedThreadPool使用的是这个BlockingQueue,通常要求线程池不设定最大的线程数,以保证提交的任务有机会执行而不被丢掉。通常这个适合任务间有依赖的场景。
当然,开发者也可以定制ThreadPoolExecutor时使用ArrayBlockingQueue有界队列
转载于:https://www.cnblogs.com/lnas01/p/5358231.html
java线程池【转】相关推荐
- 四种Java线程池用法解析
四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...
- 面试必问---Java线程池8大拒绝策略
前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发.而不论你用Fix ...
- Java线程池使用与原理
线程池是什么? 我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销.所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程 ...
- Java线程池实现原理及其在美团业务中的实践
来自:美团技术团队 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池ThreadPoolExecuto ...
- Java线程池详解学习:ThreadPoolExecutor
Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...
- Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...
Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
2019独角兽企业重金招聘Python工程师标准>>> 从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.Thread ...
- Java线程池了解一下
前言 马上就要过年了,还在岗位上坚守"swimming"的小伙伴们顶住.博主给大家带来一篇线程池的基本使用解解闷. 为什么需要使用线程池 1.减少线程创建与切换的开销 在没有使用线 ...
- java线程池拒绝策略_Java核心知识 多线程并发 线程池原理(二十三)
线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后 启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕, 再从队列中取出任务来执行.他 ...
- Java 线程池必知的8 大拒绝策略
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | kailing.pub/article/ind ...
最新文章
- 我靠这份无人机完全指南吹了一整年牛!
- 继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素...
- Character.isLetterOrDigit(ch)判断ch是否为字母或数字
- uva 1610——Party Games
- live555 rtsp直播卡顿马赛克优化
- python内置函数type_Python基于内置函数type创建新类型
- pdf复制到word有空格间隙和换行问题解决办法
- 小米笔记本 java_分享下我的小米笔记本pro安装黑苹果(Mojavae)的经历
- 在黑客攻击之前软件安全检测是重点,软件安全检测机构怎么找?
- Excel学习笔记:P18-COUNTIFS函数与SUMIFS函数
- 蓝牙(四)LMP协议解析之二
- Golang 基础:原生并发 goroutine channel 和 select 常见使用场景
- 可以批量制作吊牌标签上的条码标签打印软件
- Cadence Allegro修改Waived DRC标识颜色图文教程及视频演示
- 什么牌子的护眼灯最好推荐?盘点口碑好的护眼灯品牌
- 解答:为什么要搭建企业论坛?如何快速搭建?
- dns缓存、cnd缓存、浏览器缓存
- Unity WebGL 下载替换Word模板数据
- 无效的源发行版,解决方案
- html5 video/audio 监听事件属性及方法
热门文章
- 企业网络推广——企业网络推广中如何解决网站排名提升难题?
- 网站优化与网站权重息息相关
- 百度蜘蛛动态网页ajax,百度SEO优化百度蜘蛛可读内容
- 双系统grub启动linux,双系统ubuntu与Centos的grub启动(解决VFS报错)
- docker klee tutorial_在容器中安装新的程序
- 世界盒子怎么调中文_正版游戏平台知识小科普:epic游戏怎么调中文?
- mac brew 安装
- tensorfllow MNIST机器学习入门
- Cuckoo hash算法分析——其根本思想和bloom filter一致 增加hash函数来解决碰撞 节省了空间但代价是查找次数增加...
- Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况...