Android中最常见的四类具有不同功能特性的线程池,它们都直接或间接的通过配置ThreadPoolExecutor来实现自己的功能特性,这四类线程池分别是:

FixedThreadPool,CachedThreadPool,ScheduledThreadPool以及SingleThreadPool。

1.FixedThreadPool:

通过Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池,它的核心线程数等于最大线程数,即只有核心线程,而且当线程处于空闲状态时,它们也不会被回收。这意味着它们能够更快的相应外界的请求。另外任务队列也是没有大小限制的。

2.CachedThreadPool:

通过Executors的newCachedThreadPool创建。它是一种线程数量不定的线程池,它只有非核心线程,并且最大线程数为Integer.MAX_VALUE。由于Integer.MAX_VALUE是一个很大的数,实际上就相当于最大线程数可以是任意大。线程池中的空闲线程都有超时机制,这个超时时长为60秒,超过60秒闲置线程就会被回收。它的任务队列相当于一个空集合,这将导致任何任务都会被立即执行。当线程池中的线程都处于活动状态时,线程池会创建新的线程来处理新任务,否则就会利用空闲的线程来处理新任务。

这类线程池比较适合执行大量的耗时较少的任务。当整个线程池都处于闲置状态时,线程池中的线程都会超时而被停止,这个时候CachedThreadPool之中实际上是没有任何线程的,它几乎是不占用任何系统资源的。

3.ScheduledThreadPool:

通过Executors的newScheduledThreadPool方法创建。它的核心线程数量是固定的,而非核心线程数量是没有限制的(即Integer.MAX_VALUE);这类线程池主要用于执行定时任务和具有固定周期的重复任务。

4.SingleThreadPool:

通过Executors的newSingleThreadPool方法创建。这类线程池内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。SingleThreadPool的意义在于统一所有的外界任务到一个线程中,这使得在这些任务之间不需要处理线程同步的问题。没有超时机制。

更多相关文章

  1. Android: 如何利用Handler处理和发送消息来实现页面刷新的功能
  2. android游戏之SurfaceView
  3. Android(安卓)——对AsyncTask的理解和注意事项
  4. Android(安卓)单例模式
  5. android彻底杀死当前activity和线程方法
  6. android执行远程地址,就会报android.os.Net..... 这个原因是网络
  7. Android(安卓)Handler 绑定自定义线程之HandlerThread
  8. C#与android连接 SimpleWifi
  9. 基于Android(安卓)7.1的AsyncTask原理分析

随机推荐

  1. Cocos2dx 横屏竖屏
  2. Android培训班(1)
  3. Android COLLATE LOCALIZED ASC
  4. android大分辨率图片的缩放处理和图片添
  5. Android View(三)-MeasureSpec详解
  6. use addr2line in android
  7. android保存全局变量
  8. android的带值跳转
  9. 自定义Android标题栏TitleBar布局
  10. flutter如何打包发布android