Android中的线程池

好久没来写文章了,今天接到了阿里的面试,一面,是个技术小伙问了好多技术相关的问题,其中回答不是很好的地方是如何设计自己的线程池。由于现在的三方框架封装的很好也很稳定,就慢慢地淡忘了底层的一些细节。夜深人静之时,再次的重新的梳理下Android中线程池。

线程池的优点:

  1. 重用线程池中的线程。
  2. 能有效控制线程池的最大并发数,避免大量的线程之间因相互抢占资源而导致阻塞的现象。
  3. 能够对线程进行简单的管理,并提供定时执行以指定间隔循环执行等功能。
    Android中的线程池的概念来源于Java中的Executor,Executor是一个接口,真真的线程池的实现为ThreadPoolExecutor。ThreadPoolExecutor提供了一系列参数来配置线程池。Android的线程池主要分为4类。
  • 1.FixThreadPool
    它是一种线程数量固定的线程池,当线程处于空闲状态时,它们并不会被回收,除非线程池被关闭了。

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);

  • 2.CachedThreadPool
    它是一种线程数量不定的线程池,它只有非核心线程,并且其最大线程数为Integer.MAX_VALUE。

ExecutorService cachedThreadPool = Executors.newCachedThreadPool(5);

  • 3.ScheduledThreadPool
    它的核心线程数是固定的,而非核心数是没有限制的,并且当非核心线程闲置时会立即被回收。

ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

  • 4.SingleThreadExecutor
    这类线程内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。

ExecutorService fixedThreadPool = Executors.newSingleThreadExecutor();

你可能感兴趣的:(Android中的线程池)