安卓线程池的封装ThreadPoolProxy
2017-06-26 15:03
316 查看
package com.a520it.mygoogleplay.manager;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
//创建一个线程池
public class ThreadPoolProxy {
}
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
//创建一个线程池
public class ThreadPoolProxy {
private int mCorePoolSize; //核心线程的个数 private int mMaximumPoolSize; //总的线程个数 private long mKeepAliveTime; //线程空闲的时间 private ThreadPoolExecutor mPoolExecutor; public ThreadPoolProxy(int corePoolSize, int maximumPoolSize, long keepAliveTime) { mCorePoolSize = corePoolSize; mMaximumPoolSize = maximumPoolSize; mKeepAliveTime = keepAliveTime; } //初始化线程池 public void initThreadPoolExecutor(){ //判断不能重复创建 if (mPoolExecutor ==null || mPoolExecutor.isShutdown() || mPoolExecutor.isTerminated()){ //同步锁 synchronized (ThreadPoolProxy.class){ //创建参数 TimeUnit unit = TimeUnit.MICROSECONDS; //毫秒 BlockingQueue<Runnable> workQueue = new LinkedBlockingDeque<>(); ThreadFactory threadFactory = Executors.defaultThreadFactory(); RejectedExecutionHandler handler = new ThreadPoolExecutor.DiscardPolicy(); mPoolExecutor = new ThreadPoolExecutor( mCorePoolSize, mMaximumPoolSize, mKeepAliveTime, unit, //时间的单位 workQueue,//任务队列 threadFactory,//线程的工厂 handler); //异常捕获器 } } } //提交任务的方法 public void submit(Runnable task){ //先初始化线程池 initThreadPoolExecutor(); mPoolExecutor.submit(task); } //执行任务的方法 public void cxecute(Runnable task){ //先初始化线程池 initThreadPoolExecutor(); mPoolExecutor.execute(task); } //移除任务的方法 public void remove(Runnable task){ //先初始化线程池 initThreadPoolExecutor(); mPoolExecutor.remove(task); }
}
相关文章推荐
- 面向对象的线程池Threadpool的封装
- python threadpool 源码分析以及自己封装的简易版线程池
- linux c++下将pthread封装成threadpool(线程池)
- 大文件 and 多下载任务的封装(一)---线程池的封装(ThreadPool,TheadManager)
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- 线程池ThreadPoolExecutor的例子,Executors.newFixedThreadPool实现
- Spring线程池配置使用---ThreadPoolTaskExecutor 配置
- 浅谈ThreadPool 线程池(引用)
- Delphi ThreadPool 线程池(Delphi2009以上版本适用)
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- C++线程池-ThreadPool
- spring ThreadPoolTaskExecutor的线程池类实现多线程
- ThreadPoolTaskExecutor 创建线程池管理
- Spring Thread Pool 线程池的应用
- Java newCachedThreadPool 创建线程池
- Muduo网络库源码分析(四)EventLoopThread和EventLoopThreadPool的封装
- ThreadPool 线程池(转)
- Java线程2-2 固定大小的线程池FixedThreadPool
- 为uThreadPool增加线程池等待功能
- ThreadPool 线程池[c#]