HandlerThread
HandlerThread继承了Thread,它是一种可以使用Handler的Thread,他默认在run方法中创建looper开启消息循环
IntentService
IntentService是一种特殊的Service,可用于后台执行耗时操作,当任务执行完成后会自动停止,由于IntentService是服务的原因,他的优先级比普通的线程要高,适合执行一些高优先级的后台任务,IntentService内部封装了HandlerThread和Handler
IntentService在onCreat()方法中会构造出HandlerThread和Handler对象,每次启动IntentService,它的onStartCommand方法会被执行,onStartCommand方法回调用onStart方法,在onStart中会通过handler发送消息,在handler的handleMessage方法中,会调用onHandleIntent()方法
Android中最常见的四类具有不同功能的线程池
- FixedThreadPool
线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭了,当所有的线程处于活动状态时,新任务都会处于等待状态,直到有线程空闲出来,由于FixedThreadPool只有核心线程,并且这些核心线程不会被回收,这意味着能更加快速的响应外界的请求,FixedThreadPool中核心线程没有超时机制,并且任务队列也没有大小限制 - CachedThreadPool
线程数量不固定的线程池,它只有非核心线程,并且其最大线程数为Integer.MAX_VALUE,线程池中的空闲线程都有超时机制,这个超时时长为60秒,超过六十秒后线程会被回收 - ScheduledThreadPool
它的核心线程数是固定的,而非核心线程数是没有限制的,并且非核心线程数空闲后会立即被回收 - SingleThreadExecutor
这类线程池内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。