第11章 android的线程和线程池

来源:互联网 发布:php什么是搭建环境 编辑:程序博客网 时间:2024/06/05 18:29
  1. android常见线程有thread,AsyncTask和Intentservice以及hangdlerthread。
  2. AsyncTask抽象泛型类四个核心方法1)onPreExecute()前期准备工作2)doInBackGround(Prama….params)异步任务,通过publishprogress来更新进度,它会调用onPregerssUdate3)onProgressUpdate()主线程执行4)onPostExecute(Result result),result是doInbackgroun的返回值。
  3. 需要注意的是AsyncTask必须在主线程创建,excute方法必须在ui线程调用,不要在程序中直接调用四个核心方法。AsyncTask只能执行一次。
  4. handlerthread继承了thread实际上是用handler的thread。其中的run方法是无限循环。应该不需要的时候quit。
  5. intentserice是特殊的service,当任务执行完自动停止,本质上使用handler和handler’thread。
  6. 线程池重用线程,便于线程创建和销毁带来的性能开销。控制线程池的最大并发数,避免线程互相抢占系统资源。
  7. 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线程工厂。
  8. 四类线程池通过间接配置ThreadPoolExecutor。其中FixedThreadPool线程不会回收,除非主动关闭。
  9. CachedThreadPool(..60….)空闲线程有60秒限制,适合做大量耗时比较少的任务。
  10. ScheduledThreadPool(….DelayedWrokQueue.。)适合做定时任务和固定周期的任务.
  11. SingleThreadExecutor保证有一个线程不用处理线程同步的问题。
原创粉丝点击