线程是一个非常重要的概念,要了解线程的原理和特性,在开发时才能更好地进行使用,首先,我们要了解什么是线程:操作系统调度的最小单元,通过时间片轮转的方式调度线程。
AsyncTask:线程池+Handler
共有4个方法:
- onPreExecute
- doInBackground
- onProgressUpdate
- onPostExecute
在设计模式中,此种模式为模板方法,AsyncTask本身是一个abstract
使用限制:
1.必须在主线程中创建。
2.execute方法必须在UI线程调用。
3.同一时间内,execute只能执行一次。
4.1.6之前串行,1.6以后并行,3.0串行,3.0后可使用executeOnExecutor来并行。
HandlerThread:线程+Handler
是什么:一个Thread,在run( )方法里开启一个无限的消息循环。
IntentService:HandlerThread(短时后台任务,后台执行完自动退出)
ThreadPoolExecutor分类:
* FixedThreadPool:固定数量的线程,只有核心线程(不会被系统回收)。
* CachedThreadPool:线程数不定的线程池,只有非核心线程,最大线程数为 Integer.MAX_VALUE。
【注】:适合执行大量的耗时较少的程序。
* ScheduledThreadPool:核心线程数量固定,非核心线程数量无限制,非核心线程会被立即收回。
* SingleThreadExecutor:只有一个核心线程。