线程池使用的好处:

1)对多个线程进行统一地管理,避免资源竞争中出现的问题。

2)对线程进行复用,线程在执行完任务后不会立刻销毁,而会等待另外的任务,这样就不会频繁地创建、销毁线程和调用GC。

使用ThreadPoolExecutor创建基本线程池,构造方法:

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue) {this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,Executors.defaultThreadFactory(), defaultHandler);
}
//示例1
final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, //核心线程数10, //最大线程数量60,// 空闲线程等待时间TimeUnit.SECONDS, //时间单位new ArrayBlockingQueue<Runnable>(100));Runnable runnable = new Runnable() {@Overridepublic void run() {//... 耗时操作}};threadPoolExecutor.execute(runnable);
//示例2
private val cacheThread: ExecutorService by lazy { ThreadPoolExecutor(Runtime.getRuntime().availableProcessors() * 30, Runtime.getRuntime().availableProcessors() * 50,600L, TimeUnit.SECONDS,SynchronousQueue<Runnable>()); }
//示例3
public class MyThreadFactory implements ThreadFactory {private int counter;private String name;public MyThreadFactory(String name) {counter = 0;this.name = name;}@Overridepublic Thread newThread(Runnable run) {Thread thread = new Thread(run, name + "-Thread-" + counter);counter++;Timber.d("create thread with name: %s", thread.getName());return thread;}
}public class MyExecutor extends ThreadPoolExecutor {public MyExecutor(String threadPrefix) {super(2, 6, 60,TimeUnit.SECONDS, new ArrayBlockingQueue<>(3),new MyThreadFactory(threadPrefix),new DiscardOldestPolicy());}public static ThreadPoolExecutor polling = new MyExecutor("polling");public static ThreadPoolExecutor backgroundTask = new MyExecutor("backgroundTask");}

以下是使用:

MyExecutor.polling.execute {doStatus()
}MyExecutor.polling.execute {cleanDb()
}MyExecutor.polling.shutdownNow()

Android线程池简单使用相关推荐

  1. android 线程池

    为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2 ...

  2. Android 线程池的使用

    线程池优点 提到线程池就必须先说一下线程池的优点,线程池的优点可以概括为以下四点: * 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销: * 线程池旨在线程的复用,就避免了创建线程和销毁 ...

  3. Android 线程池概念及使用

    一:使用线程池的原因 在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题: 在任务众多的情况下,系统要为每一个任务 ...

  4. linux线程池简单实例

    linux线程池简单实例 转载于:https://www.cnblogs.com/adong7639/p/5044685.html

  5. Android 线程池管理工具类

    转自Android 线程池 public class AppExecutors {private static final String TAG = "AppExecutors"; ...

  6. Android线程池的简单使用

    参考链接 https://blog.csdn.net/u012702547/article/details/52259529 https://blog.csdn.net/wolf909867753/a ...

  7. Android线程池封装库

    目录介绍 1.遇到的问题和需求 1.1 遇到的问题有哪些 1.2 遇到的需求 1.3 多线程通过实现Runnable弊端 1.4 为什么要用线程池 2.封装库具有的功能 2.1 常用的功能 3.封装库 ...

  8. Android线程池详解

    引入线程池的好处 1)提升性能.创建和消耗对象费时费CPU资源 2)防止内存过度消耗.控制活动线程的数量,防止并发线程过多. 我们来看一下线程池的简单的构造 [html] view plaincopy ...

  9. java线程池1001java线程池_深入浅出Java(Android )线程池ThreadPoolExecutor

    前言 关于线程池 在Java/Android开发中,设计到并发的请求,那基本上是离不开线程池了.用线程池的好处: 1.减少线程频繁创建.销毁的开销: 2.好控制并发量,降低OOM的可能,至于原因文中会 ...

最新文章

  1. Linux内核网络数据发送(五)——排队规则
  2. python数组改变维数
  3. WindowsServer和普通WIN操作系统有什么不同?
  4. 游戏中常用的寻路算法(5)预先计算好的路径的所用空间
  5. 使用nfs映射远程服务器磁盘目录
  6. 遍历repeater中的控件的几种方式
  7. USACO-Section1.5 Arithmetic Progressions(枚举)
  8. python与线性代数 向量方程
  9. 全网段ip扫描工具_FuzzScanner 信息搜集的工具集
  10. Redis 存储机制
  11. 火狐浏览器缓存区的利用,如何提取火狐缓存的动画
  12. oracle 函数 如何编写
  13. 高级项目管理-1、信息化和信息系统
  14. 老调重谈:C语言中的指针和数组
  15. android中AudioRecord使用详解
  16. 基于B站服务器宕机事故,小鸟云聊聊高防云服务器选择技巧
  17. Altium designer Sch Compiler:编译常见错误
  18. CPU性能衡量参数-主频,MIPS,CPI,时钟周期,机器周期,指令周期
  19. 初识js-charts和E-charts
  20. Java经典面试题 带答案(三)

热门文章

  1. 2022-2028年中国内衣用热熔胶膜行业发展现状调查及市场分析预测报告
  2. centos 非root用户(普通用户)替换yum安装软件方法
  3. SpringBoot (五) :SpringBoot整合mybatis
  4. python实现glove,gensim.word2vec模型训练实例
  5. 预见未来丨机器学习:未来十年研究热点
  6. 第三天:Vue的组件化
  7. LeetCode简单题之托普利茨矩阵
  8. 深度学习到底有哪些卷积?
  9. CVPR2020论文解读:3D Object Detection三维目标检测
  10. 二分查找模板全面总结