美文网首页
Android中的线程池

Android中的线程池

作者: 猪爸爸Hulk | 来源:发表于2018-05-17 21:43 被阅读27次
线程池的优点

1.重用线程池中的线程,避免线程的创建和销毁所带来的性能开销。
2.控制线程池的最大并发数,避免大量的线程之间因相互抢占系统资源导致的阻塞现象。
3.能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。


线程池
ThreadPoolExecutor

线程池的真正实现,它的构造方法提供了一系列参数来配置线程池。

corePoolSize:核心线程数(CPU核心数+1)
maximumPoolSize:最大线程数(CUP核心数×2+1)
keepAliveTime:非核心线程闲置的超时时长(1秒)
unit:指定keepAliveTime的时间单位
workQueue:线程池中的任务队列(容量128)
threadFactory:线程工厂,为线程池提供创建新线程的功能。

ThreadPoolExecutor执行规则
1.如果线程池中的线程数量未达到核心线程数量,会直接启动一个核心线程执行任务。
2.如果线程池中的线程数量已经达到或者超过核心线程数量,那么任务会被插入到任务队列中排队等待执行。
3.如果无法插入到任务队列中,往往是由于任务队列已满,这时候如果线程数量未达到线程池规定的最大值,则立刻启动一个非核心线程来执行任务。
4.如果线程数量已经达到线程池规定的最大值,那么就拒绝执行此任务,ThreadPoolExecutor会调用RejectedExecutionHandler的rejectedExecution方法通知调用者。

线程池的分类

FixedThreadPool
只有核心线程、线程数量固定、没有超时机制、空闲状态也不会被回收、任务队列也没有大小限制
CachedThreadPool
只有核心线程、线程数量不定、有超时机制、60秒闲置线程回收、最大线程数是Integer.MAX_VALUE
ScheduledThreadPool
核心线程固定、非核心线程Integer.MAX_VALUE、非核心线程闲置立即被回收
SingleThreadExecutor
只有一个核心线程、所有任务都在同一线程中按顺序执行

相关文章

  • Android线程池的使用

    一、线程与线程池,为什么要使用线程池 1、Android中的线程 在Android中有主线程和子线程的区分。主线程...

  • Android 多线程:线程池理解和使用总结

    一、Android线程池介绍 1.1 原理 Android中的线程池概念来源于Java中的Executor,Exe...

  • 19. 线程池

    Android 中的线程池就是 java 中的线程池,即 ThreadPoolExecutor 类。 Java 通...

  • 线程池

    话题:线程池Android中的线程池有哪些?它们的区别是什么?为什么要使用线程池? 线程是Android里面一个很...

  • Android 多线程

    AsyncTaskHandlerThreadIntentServiceandroid中的线程池 android 中...

  • 笔记:Android线程和线程池

    Android线程和线程池 Android中的线程操作相关的类有 AsyncTask IntentService ...

  • Android面试之线程和线程池

    Android中的线程形态 AsyncTask底层用到了线程池。AsyncTask封装了线程池和Handler,它...

  • 第十九周 线程池

    话题:线程池 Android 中的线程池有哪些?它们的区别是什么?为什么要使用线程池?关键字:线程池、Thread...

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • Android中的线程池

    为什么要使用线程池?Android 中的线程池有哪些?它们的区别是什么? 一、线程池的作用 重用线程池中的线程,可...

网友评论

      本文标题:Android中的线程池

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