美文网首页
Android多线程

Android多线程

作者: 34sir | 来源:发表于2019-01-29 10:16 被阅读8次

类别

  • AsyncTask
    底层实现:线程池+handler
  • IntentService
    底层实现:HandlerThread 继承自普通service 具备异步线程的特性以及service不受activity生命周期的影响
  • HandlerThread
    具有消息循环的线程 内部可以使用Handler

比较

  • AsyncTask
    doInBackground在线程池中进行
    限制:
    1.必须在主线程中加载
    2.AsyncTask对象必须在主线程中创建
    3.execute 必须在ui线程中调用 并且只能调用一次

默认情况下 AsyncTask是串行执行的

  • HandlerThread
    继承自Thread run方法中使用Looper 此run方法是一个无限循环 不需要使用Handler时quit或者quitsafely执行终止

HandlerThread和Thread的区别:
Thread会创建多个匿名线程 占用系统资源
HandlerThread 自带Looper 通过消息队列重复使用线程 后续的任务会被延迟执行不会阻碍ui线程(应用启动会被分配一个主线程ActivityThread,这个就是ui线程)

  • 线程池
    特性:
    1.重用线程池中的线程 避免因为线程的创建和销毁带来性能开销
    2.控制线程最大并发书 避免大量线程抢占系统资源导致阻塞
    3.可以对线程进行简单的管理

线程真正的实现者:ThreadPoolExcutor

种类:主要分为4类 通过 Excutors提供的工厂方法得到
FixedThreadPool CatchedThreadPool FixedThreadPool FixedThreadPool

相关文章

网友评论

      本文标题:Android多线程

      本文链接:https://www.haomeiwen.com/subject/rhfmeftx.html