Android 线程池

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值