线程池的使用以及其工具类的封装
来源:互联网 发布:英语语法 知乎 编辑:程序博客网 时间:2024/05/16 17:31
/** * 线程池管理类 */public class MyThreadPoolManager { /** * 说明:下面这些常量我是根据AsyncTask的源码配置的,大家可以根据自己需求自行配置 */ //根据cpu的数量动态的配置核心线程数和最大线程数 private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); //核心线程数 = CPU核心数 + 1 private static final int CORE_POOL_SIZE = CPU_COUNT + 1; //线程池最大线程数 = CPU核心数 * 2 + 1 private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1; //非核心线程闲置时超时1s private static final int KEEP_ALIVE = 1; // 要确保该类只有一个实例对象,避免产生过多对象消费资源,所以采用单例模式 private MyThreadPoolManager() { } private static MyThreadPoolManager sInstance; public synchronized static MyThreadPoolManager getsInstance() { if (sInstance == null) { sInstance = new MyThreadPoolManager(); } return sInstance; } // 线程池的对象 private ThreadPoolExecutor executor; // 使用线程池,线程池中线程的创建完全是由线程池自己来维护的,我们不需要创建任何的线程 // 我们所需要做的事情就是往这个池子里面丢一个又一个的任务 public void execute(Runnable r) { if (executor == null) { /** * corePoolSize:核心线程数 * maximumPoolSize:线程池所容纳最大线程数(workQueue队列满了之后才开启) * keepAliveTime:非核心线程闲置时间超时时长 * unit:keepAliveTime的单位 * workQueue:等待队列,存储还未执行的任务 * threadFactory:线程创建的工厂 * handler:异常处理机制 * */ executor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(20), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy()); } executor.execute(r);// 把一个任务丢到了线程池中 } public void cancel(Runnable r) { if (r != null) { executor.getQueue().remove(r);//把任务移除等待队列 } }}
1 0
- 线程池的使用以及其工具类的封装
- JDBC工具类的封装以及运用
- 使用QueueUserWorkerItem实现的线程池封装
- 使用QueueUserWorkerItem实现的线程池封装
- 使用QueueUserWorkerItem实现的线程池封装
- 线程池的简单封装和使用
- Android greenDAO的使用,工具类封装
- 1.java的八种基本数据类型以及其封装类的理解应用
- jQuery自执行函数以及封装工具类的方法
- Handler优化以及SharedPreferences工具类的封装
- 自己封装的验证码工具类以及登录验证
- 03-mysql数据库的CRUD1.1版本-将其封装成工具类
- 封装的工具类
- C#操作Excel的类以及其使用举例说明
- C#操作Excel的类以及其使用举例说明
- Wamp以及其数据库的简单使用
- 安卓Xutils3网络工具,注解工具,图片工具和日志工具的使用,以及对网络工具的封装
- 简易高重用的jdbcutils工具封装实现类以及简易连接池实现
- CSDN-markdown编辑器,终于支持数学公式了,nice!
- JS获取前一天时间
- Codeforces 785B-Anton and Classes
- QT小生研究之旅
- jzoj P1542 【USACO Open 2012银】跑步Running laps
- 线程池的使用以及其工具类的封装
- group by
- codevs1052 地鼠游戏 贪心
- 关于C语言的副作用和序列点~
- 雪碧图(css sprite)
- 【举例】Android自定义Dialog——做出“确定/取消”的选择
- 正则表达式工作总结
- 图片流量节省大杀器:基于腾讯云CDN的sharpP自适应图片技术实践
- 延时函数