美文网首页
HandlerThread/IntentService以及线程池

HandlerThread/IntentService以及线程池

作者: 哇楼主 | 来源:发表于2019-10-15 11:46 被阅读0次

    HandlerThread

    HandlerThread继承了Thread,它是一种可以使用Handler的Thread,他默认在run方法中创建looper开启消息循环

    IntentService

    IntentService是一种特殊的Service,可用于后台执行耗时操作,当任务执行完成后会自动停止,由于IntentService是服务的原因,他的优先级比普通的线程要高,适合执行一些高优先级的后台任务,IntentService内部封装了HandlerThread和Handler
    IntentService在onCreat()方法中会构造出HandlerThread和Handler对象,每次启动IntentService,它的onStartCommand方法会被执行,onStartCommand方法回调用onStart方法,在onStart中会通过handler发送消息,在handler的handleMessage方法中,会调用onHandleIntent()方法

    Android中最常见的四类具有不同功能的线程池

    • FixedThreadPool
      线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭了,当所有的线程处于活动状态时,新任务都会处于等待状态,直到有线程空闲出来,由于FixedThreadPool只有核心线程,并且这些核心线程不会被回收,这意味着能更加快速的响应外界的请求,FixedThreadPool中核心线程没有超时机制,并且任务队列也没有大小限制
    • CachedThreadPool
      线程数量不固定的线程池,它只有非核心线程,并且其最大线程数为Integer.MAX_VALUE,线程池中的空闲线程都有超时机制,这个超时时长为60秒,超过六十秒后线程会被回收
    • ScheduledThreadPool
      它的核心线程数是固定的,而非核心线程数是没有限制的,并且非核心线程数空闲后会立即被回收
    • SingleThreadExecutor
      这类线程池内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。

    相关文章

      网友评论

          本文标题:HandlerThread/IntentService以及线程池

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