线程是一个非常重要的概念,要了解线程的原理和特性,在开发时才能更好地进行使用,首先,我们要了解什么是线程:操作系统调度的最小单元,通过时间片轮转的方式调度线程。
AsyncTask:线程池+Handler
共有4个方法:
1. onPreExecute
2. doInBackground
3. onProgressUpdate
4. onPostExecute
使用限制:
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:只有一个核心线程。