我的简书:https://www.jianshu.com/u/c91e642c4d90
我的CSDN:http://blog.csdn.net/wo_ha
我的GitHub:https://github.com/chuanqiLjp
我的个人博客:https://chuanqiljp.github.io/
序言
这篇文章主要记录在学习《Android开发艺术探索》第11章的读书笔记,以备日后查用,码字不易转载请注明出处:http://www.jianshu.com/p/64db22fa9bc4
1、Android中扮演线程的有Thread 、AsyncTask、IntentService、HandlerThread;AsyncTask底层使用了线程池,、IntentService和HandlerThread底层直接使用线程;
2、AsyncTask、IntentService、HandlerThread的比较:
1 | 1、AsyncTask:封装了线程池和Handler,主要方便开发者在子线程中更新UI,并不适合特别耗时的任务, |
3、AsyncTask的使用注意事项:
1 | 1、提供了onCancelled()方法,在主线程中执行,当异步任务被取消时,onCancelled()方法会被调用,这个时候onPostExecute方法不会被调用; |
4、HandlerThread:由于HandlerThread的run方法是一个无限循环,因此当明确不需要再使用HandlerThread时通过调用他的quite()或quitSafely()方法来终止线程的执行;
5、线程池的优点:
1 | 1、重用线程池的线程,避免因为线程的创建和销毁所带来的开销; |
6、Java中的Executor是一个接口,通过调用Executors的静态方法创造线程池,所有线程池的实现都是配置ThreadPoolExecutor类来实现的,ThreadPoolExecutor的构造方法:
1 | /** |
7、Runtime.getRuntime().availableProcessors():获取CPU的核心数;
8、线程池的分类和分别适用的场景:
1、FixedThreadPool:
1 | 创建:Executors.newFixedThreadPool(); |
2、CachedThreadPool:
1 | 创建:Executors.newCachedThreadPool(); |
3、ScheduledThreadPool:
1 | 创建:Executors.newScheduledThreadPool(); |
4、SingleThreadExecutor:
1 | 创建:Executors.newSingleThreadExecutor(); |