Android 线程池的分类

  • FixedThreadPool

它是一个线程数量固定的线程池,并且全是核心线程,没有超时机制且排队任务队列无限制。因为全是核心线程,所以响应比较快,而且不用担心线程会被回收。

  • CachedThreadPool

它是一个数量无限多的线程池,所有的线程都是非核心线程,当有新任务来时,如果没有空闲的线程则直接创建新的线程不会去排队而直接执行,并且超时时间都是60s,所以当线程空闲一段时间时就会被系统回收,所以理论上该线程池不会有占用系统资源的无用线程。

  • ScheduledThreadPool

它是一种像 FixedThreadPool 与 CachedThreadPool 两种线程池的合体,它有固体数量的核心线程,且有数量无限多的非核心线程,但非核心线程的超时时间是0秒,所以非核心线程一旦空闲会被马上回收。

  • SingleThreadExecutor

它只有一个核心线程,确保所有的任务都要排队按顺序执行。它的意义在于,统一所有的外界任务到同一线程中,让使用者忽略线程同步问题。