第11章 Android的线程和线程池
常见的线程形态 AsyncTask:不适合特别耗时的后台任务,耗时使用线程池。 必须在主线程中加载。 Android3.0以后是串行执行的,3.0以前是并行。 HanderThread:继承了Thread,是一种可以使用Handler的Thread,和普通的Thread的区别是在run方法中可通过Looper.prepare创建消息队列。 并通过Looper.loop()来开启消息循环。 IntentService:抽象类,适合执行高优先级 后台任务。 每执行一个后台任务就必须启动一次IntentService,内部则通过消息的方式向HanderThread请求执行任务,Handler中的Looper是顺序 处理消息的,所以IntentService也是顺序执行后台任务的,当有多个后台任务同时存在时,后台任务会按照外界发起的顺序排队执行。 线程池ThreadPoolExecutor 优点: 1、重用线程中的线程避免因为线程的创建和销毁所带来的性能开销; 2、能有效控制线程池最大并发数,避免大量的线程之间因互相抢占资源导致阻塞; 3、对线程进行管理,提供定时执行以及指定间隔循环执行等功能。 publicThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit