- android常见线程有thread,AsyncTask和Intentservice以及hangdlerthread。
- AsyncTask抽象泛型类四个核心方法1)onPreExecute()前期准备工作2)doInBackGround(Prama….params)异步任务,通过publishprogress来更新进度,它会调用onPregerssUdate3)onProgressUpdate()主线程执行4)onPostExecute(Result result),result是doInbackgroun的返回值。
- 需要注意的是AsyncTask必须在主线程创建,excute方法必须在ui线程调用,不要在程序中直接调用四个核心方法。AsyncTask只能执行一次。
- handlerthread继承了thread实际上是用handler的thread。其中的run方法是无限循环。应该不需要的时候quit。
- intentserice是特殊的service,当任务执行完自动停止,本质上使用handler和handler’thread。
- 线程池重用线程,便于线程创建和销毁带来的性能开销。控制线程池的最大并发数,避免线程互相抢占系统资源。
- ThreadPoolExecute(int coolPoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,ThreadFactory threadFactory)1.coolPoolSize核心线程数,在设置allowThreadTimeout属性时,闲置线程会有超时策略,时间间隔由keepalivetime控制。2.maximumPoolSize最大线程数。3.keepAliveTime超时时长。4.unit时间单位 5.workQueue任务队列,线程的excute方法提交的runnable会存在这个参数中。6.threadFactory线程工厂。
- 四类线程池通过间接配置ThreadPoolExecutor。其中FixedThreadPool线程不会回收,除非主动关闭。
- CachedThreadPool(..60….)空闲线程有60秒限制,适合做大量耗时比较少的任务。
- ScheduledThreadPool(….DelayedWrokQueue.。)适合做定时任务和固定周期的任务.
- SingleThreadExecutor保证有一个线程不用处理线程同步的问题。
第11章 android的线程和线程池
最新推荐文章于 2024-04-28 21:09:27 发布