Android中的线程池有哪些?
他们的区别是什么?
为什么要使用线程池?
为什么要使用线程池
- 集中管理线程的创建和销毁,提高性能
- 线程池可以有效控制线程池的最大并发数,避免大量的线程之间因为互相抢占资源而导致线程阻塞
- 对线程进行简单管理,如定时执行或者间隔循环执行
线程的分类
CachedThreadPool
- 数量不定且只有非核心线程
- 任意大的最大线程数
- 当所有线程都处于活动状态的时候,会创建新线程执行任务,否则就利用新线程处理任务
- 有超时时间为60秒,因为有超时时间,所以它几乎是不占任何系统资源的
- 适合执行大量的耗时较少的任务
FixedThreadPool
- 线程数量固定且只有核心线程
- 当所有线程都处于活动状态时,新任务将出处于等待状态,直到有线程空闲
ScheduledThreadPool
- 有固定的核心线程且非核心线程没有限制
- 非核心线程空闲时会被立即回收
- 适合执行定时任务和具有固定周期的重复任务
SingleThreadExecutor
- 只有一个核心线程,所有任务都在一个线程中按顺序执行