Android 线程池

来源:互联网 发布:windows xp qq影音下载 编辑:程序博客网 时间:2024/06/07 02:17

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:

SingleThreadExecutor
实例化ThreadPoolExecutor的时候。设置最大的线程数是1。而且保活数也是1。说明该线程池的中只会开启1个线程,并且该线程在空闲的时候也不会被回收。
LinkedBlockingQueue:基于链接节点的可选限制的阻塞队列。这个队列排列元素FIFO(先进先出)。

2.2 CachedThreadPool:

CachedThreadPool
在代码中可看到,保活的线程是零条。即当线程池的线程都是空闲状态的时候,线程就会被系统会送。而之所以命名为Cache,我想是因为保活时间是有60S的。
SynchronousQueue:一个阻塞队列,其中每个插入操作必须等待另一个线程相应的删除操作,反之亦然

2.3 FixedThreadPool:

FixedThreadPool
代码中传递的nThreads,是最大的线程数也是最大的线程保活数。而所以Fixed的特征就是,线程池的所有线程都不会被系统回收(即使是空闲状态)。这样子可以理解为Single的高级版0-0

2.4 ScheduledThreadPool:

ScheduledThreadPool
ScheduledThreadPool2
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

0 0
原创粉丝点击