11.5
来源:互联网 发布:ctf源码泄露 编辑:程序博客网 时间:2024/06/01 10:43
昨天对线程池有所了解,用到了以下几个类
BlockingQueue queue 存放任务的队列
BlockingQueue queueThreadPool 存放线程任务的队列,在初始化线程池中用到
这里使用双队列的目的是,线程连接池里面用queueThreadPool初始化。需要处理的任务放在queue队列中,然后经过处理再加入到线程池队列中进行处理。优点是queue队列中存放的不要求必须是implements Runnable的类,任意类都可以。
ThreadPoolExecutor executor线程连接池
实现一个监听线程,里面存放上述属性,然后使用queue的take方法,将放入到队列中的任务取出,经过处理,调用executor的submit方法此方法是父类AbstractExecutorService的方法,因为这个方法的参数不光是继承线程类,同时也可以是实现Callable的类。好处是Callable与Runnable类似,但是call方法可以有返回值然而start方法不可以有。
目前线程池的了解就这么多,其他的都是网上能找到的。这里copy一份。
* ArrayBlockingQueue:一个由数组支持的有界队列。
* LinkedBlockingQueue:一个由链接节点支持的可选有界队列。
* PriorityBlockingQueue:一个由优先级堆支持的无界优先级队列。
* DelayQueue:一个由优先级堆支持的、基于时间的调度队列。
* SynchronousQueue:一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制
1、newFixedThreadPool创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。
2、newCachedThreadPool创建一个可缓存的线程池。这种类型的线程池特点是:
1).工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程。
2).如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。
3、newSingleThreadExecutor创建一个单线程化的Executor,即只创建唯一的工作者线程来执行任务,如果这个线程异常结束,会有另一个取代它,保证顺序执行(我觉得这点是它的特色)。单工作线程最大的特点是可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的 。
4、newScheduleThreadPool创建一个定长的线程池,而且支持定时的以及周期性的任务执行,类似于Timer。(这种线程池原理暂还没完全了解透彻)
详细介绍:
http://blog.csdn.net/waterbig/archive/2009/11/10/4794244.aspx
源码分析:
http://xtu-xiaoxin.javaeye.com/blog/647744
今天计划继续学习这个线程池,看下ipmonitor这个模块。
- 11.5
- 11.5
- 11.5
- 11.5 -- 2012
- 11.5 心得
- 11.5考试
- 11.5笔记
- 11.5.总结
- 11.5List
- 11.5 EDK
- 11.5dairy
- python--11.5
- 11.5模拟
- java-11.5
- 初出張(11.5~11.7)
- 11.5 三层架构
- 11.5 小 结
- PowerBuilder 11.5下载地址
- 【思考1】如何让你的工作更有价值
- Android 中的XMPP 应用
- Android 架构解析及驱动 键盘篇
- Traffic Server 简介
- 最近 飞秋 的一些故事
- 11.5
- SQL Server 合并(删除)分区解惑
- 在eclipse中安转svn
- 判断网络上的图片是否存在
- String和StringBuffer的区别
- ping他人的ip
- 数据库设计原则
- hdu 2779
- [Warm-up] Homework