工具类-线程池
来源:互联网 发布:大数据的实践包括 编辑:程序博客网 时间:2024/05/22 15:48
线程池的基本类(默认是单例的否则线程无法得到控制)
public class ThreadManager { public static ThreadPool instance; private ThreadPoolExecutor longExecutor; // 耗时比较长的线程池 用来请求网络 private ThreadPoolExecutor shortExecutor; // 比较短的线程池 用来加载本地数据 // 获取单例的线程池对象 public static ThreadPool getInstance() { if (instance == null) { synchronized (ThreadManager.class) { if (instance == null) { int cpuNum = Runtime.getRuntime().availableProcessors();// 获取处理器数量 int threadNum = cpuNum * 2 + 1;// 根据cpu数量,计算出合理的线程并发数 instance = new ThreadPool(threadNum-1, threadNum, Integer.MAX_VALUE);//默认是双核的cpu 每个核心走一个线程 一个等待线程 } } } return instance; } public static class ThreadPool { private ThreadPoolExecutor mExecutor; private int corePoolSize; private int maximumPoolSize; private long keepAliveTime; private ThreadPool(int corePoolSize, int maximumPoolSize, long keepAliveTime) { this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; this.keepAliveTime = keepAliveTime; } public void execute(Runnable runnable) { if (runnable == null) { return; } if (mExecutor == null) { mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心线程数 maximumPoolSize, // 最大线程数 keepAliveTime, // 闲置线程存活时间 TimeUnit.MILLISECONDS,// 时间单位 new LinkedBlockingDeque<Runnable>(Integer.MAX_VALUE),// 线程队列 Executors.defaultThreadFactory(),// 线程工厂 new ThreadPoolExecutor.AbortPolicy() {// 队列已满,而且当前线程数已经超过最大线程数时的异常处理策略 @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { super.rejectedExecution(r, e); } } ); } mExecutor.execute(runnable); } // 从线程队列中移除对象 public void cancel(Runnable runnable) { if (mExecutor != null) { mExecutor.getQueue().remove(runnable); } } }}
默认执行的控制
ThreadManager.getInstance().execute(new MyRunnable(url, request, executeevent));
代码注释比较详细有什么不明白的地方欢迎提问
0 0
- 线程池工具类
- 工具类-线程池
- java-线程池-工具类
- 线程池相关工具类
- 线程池命名工具类
- Executors 工具类 创建 的 线程池
- 线程池工具类,直接可用!
- ThreadPool 之 线程池工具类 Executors
- android 自定义线程池ThreadPoolUtils工具类
- 线程同步工具类
- 线程工具类
- 线程同步工具类
- 线程工具类
- 线程工具类
- 线程池 Executors工具应用
- 线程同步工具类--CyclicBarrier
- 线程相关的工具类
- Java:线程并发工具类
- Android四大组件之ContentProvider(内容提供者)02
- 考新郎 递推练习+排列组合。。
- TCP/IP的分析
- ImportError: No module named cv2 解决方法
- Struts2 ActionInvocation
- 工具类-线程池
- ContentObserver内容监听者(内容观察者)
- Eclipse / MyEclipse中断点调试的基本使用
- JZ006 connection refused
- Bone Collector
- zookeeper配置文件详解
- 小悟方法重载
- Apache2+Tomcat7负载均衡配置(超详细整合文档)
- Problem on Group Trip UVALive - 7219 (模拟+优先队列处理)