Executors
2015-11-18 17:59
197 查看
一、 初始化的几种方式
1、Executors.newCachedThreadPool()
CacheThreadPool : 将为每一个任务创建一个线程(程序执行的过程中通常会创建与所需数量相同的线程),然后在回收旧线程时,停止创建新线程,因此它是合理的Executors首选。
2、 Executors.newFixedThreadPool(5)
FixedThreadPool : 用有限的线程集来执行提交的任务。
3、 Executors.newSingleThreadExecutor()
SingleThreadExecutor : 就像是线程数量为1 的FixedThreadPool,它的应用有很多,比如:
希望在另一个线程中长期存活的任务: 如监听进入的套接字连接的任务;
希望在线程中运行的短任务: 更新本地或远程日志的小任务、事件分发线程;
二、 SingleThreadExecutor
由于它是只有一个线程的线程池,所以如果我们向它提交多个任务,这些任务都是使用相同的线程,SingleThreadExecutor实现了维护自己的任务队列,下一个任务的开始时间,一定时上一个任务的结束时间,所以所有的任务会按提交的顺序执行。具有这个特点就可以避免并发的问题,免除加锁的操作。
后期会持续更新,这篇博客,探讨Executors的使用,和不同的初始化对象的使用场景。
1、Executors.newCachedThreadPool()
CacheThreadPool : 将为每一个任务创建一个线程(程序执行的过程中通常会创建与所需数量相同的线程),然后在回收旧线程时,停止创建新线程,因此它是合理的Executors首选。
2、 Executors.newFixedThreadPool(5)
FixedThreadPool : 用有限的线程集来执行提交的任务。
3、 Executors.newSingleThreadExecutor()
SingleThreadExecutor : 就像是线程数量为1 的FixedThreadPool,它的应用有很多,比如:
希望在另一个线程中长期存活的任务: 如监听进入的套接字连接的任务;
希望在线程中运行的短任务: 更新本地或远程日志的小任务、事件分发线程;
二、 SingleThreadExecutor
由于它是只有一个线程的线程池,所以如果我们向它提交多个任务,这些任务都是使用相同的线程,SingleThreadExecutor实现了维护自己的任务队列,下一个任务的开始时间,一定时上一个任务的结束时间,所以所有的任务会按提交的顺序执行。具有这个特点就可以避免并发的问题,免除加锁的操作。
后期会持续更新,这篇博客,探讨Executors的使用,和不同的初始化对象的使用场景。
相关文章推荐
- Qt程序启动画面播放(gif与swf两种动画格式) - 路上的脚印
- ngModel双向绑定的一些问题
- mongoDB 基本操作,增删改查
- 漫谈流式计算的一致性
- can you spot the memory leak
- aspx、ashx、asmx文件处理请求效率比较
- mongodb新手入门,mongodb命令学习
- ios软件开发-第一课-入门篇
- Python中的random模块
- MySQL中事务概念的简洁学习教程
- hdu4815Little Tiger vs. Deep Monkey 概率dp
- VMware Vsphere
- 数据类型 与范围
- iOS 图片 按钮 切圆角
- Linux图片处理工具-GraphicsMagick
- AngularJS如何编译和呈现页面
- C++基础::shared_ptr 编程细节(一)
- linux date命令
- mysql安装(亲自安装过)
- 河南省“互联网+ ”开放合作大签约850亿元“互联网+”高峰论坛、河南省县域电商峰会、腾讯“互联网+”中国行河南站活动,以及阿里—中原云大数据应用创意大赛、腾讯河南智慧旅游、河南省互联网创新创业大赛