1.Android ThreadPoolExecutor:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit
, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)
corePoolSize:线程池中保活的线程数,即使它是空闲状态。
maximumPoolSize:线程池中允许的最大的容量。
keepAliveTime:线程保活的最大时间,当空闲的线程在keepAliveTime时间之内还没有收到新的异步任务,那么将被回收。
unit:keepAliveTime的单位
workQueue:异步任务的消息队列
threadFactory:为线程池创建新的线程
2.四种类型线程池:
2.1 SingleThreadExecutor:
实例化ThreadPoolExecutor的时候。设置最大的线程数是1。而且保活数也是1。说明该线程池的中只会开启1个线程,并且该线程在空闲的时候也不会被回收。
LinkedBlockingQueue:基于链接节点的可选限制的阻塞队列。这个队列排列元素FIFO(先进先出)。
2.2 CachedThreadPool:
在代码中可看到,保活的线程是零条。即当线程池的线程都是空闲状态的时候,线程就会被系统会送。而之所以命名为Cache,我想是因为保活时间是有60S的。
SynchronousQueue:一个阻塞队列,其中每个插入操作必须等待另一个线程相应的删除操作,反之亦然
2.3 FixedThreadPool:
代码中传递的nThreads,是最大的线程数也是最大的线程保活数。而所以Fixed的特征就是,线程池的所有线程都不会被系统回收(即使是空闲状态)。这样子可以理解为Single的高级版0-0
2.4 ScheduledThreadPool:
super调用的就是ThreadPoolExecutor的构造方法。从代码上其返回的对象是ScheduledThreadPoolExecutor,而从英文翻译可理解为预约线程?并且线程对别用的也是Delayed。
而需要执行线程池,只需要调用execute()方法就可以了。对于schedule线程池,使用ScheduledExecutorService类来指向线程池地址。从而调用ScheduledExecutorService.schedule();方法。
最后关闭就调用shutdown()咯。
参考资料:
http://blog.csdn.net/seu_calvin/article/details/52415337
http://blog.csdn.net/qq_17250009/article/details/50906508
http://www.cnblogs.com/whoislcj/p/5607734.html