【每周一题】—— 线程池

Android中的线程池有哪些?
他们的区别是什么?
为什么要使用线程池?

为什么要使用线程池

  1. 集中管理线程的创建和销毁,提高性能
  2. 线程池可以有效控制线程池的最大并发数,避免大量的线程之间因为互相抢占资源而导致线程阻塞
  3. 对线程进行简单管理,如定时执行或者间隔循环执行

线程的分类

  1. CachedThreadPool

    • 数量不定且只有非核心线程
    • 任意大的最大线程数
    • 当所有线程都处于活动状态的时候,会创建新线程执行任务,否则就利用新线程处理任务
    • 有超时时间为60秒,因为有超时时间,所以它几乎是不占任何系统资源的
    • 适合执行大量的耗时较少的任务
  2. FixedThreadPool

    • 线程数量固定且只有核心线程
    • 当所有线程都处于活动状态时,新任务将出处于等待状态,直到有线程空闲
  3. ScheduledThreadPool

    • 有固定的核心线程且非核心线程没有限制
    • 非核心线程空闲时会被立即回收
    • 适合执行定时任务和具有固定周期的重复任务
  4. SingleThreadExecutor

    • 只有一个核心线程,所有任务都在一个线程中按顺序执行

你可能感兴趣的:(每周一题,总结,Android,线程池)