一个简单的线程池工具类——可以实现对单个线程的控制
2016-12-11 11:34
363 查看
注意:removeTask()方法起作用有一个必要的前提,就是这个任务还没有开始执行,如果已经开始执行了,就停止不了该任务了,这个方法就不会起作用
工具类:
使用方法:
创建线程池代理类和runnable对象
对runnable对象进行操作:
工具类:
/** *线程池代理类 */ public class ThreadPoolProxy { ThreadPoolExecutor mThreadPoolExecutor; private int corePoolSize; private int maximumPoolSize; private long keepAliveTime; public ThreadPoolProxy(int corePoolSize, int maximumPoolSize, long keepAliveTime) { this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; this.keepAliveTime = keepAliveTime; } private ThreadPoolExecutor initExecutor() { if(mThreadPoolExecutor == null) { synchronized(ThreadPoolProxy.class) { if(mThreadPoolExecutor == null) { TimeUnit unit = TimeUnit.MILLISECONDS; ThreadFactory threadFactory = Executors.defaultThreadFactory(); RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy(); LinkedBlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(); mThreadPoolExecutor = new ThreadPoolExecutor( corePoolSize,//核心线程数 maximumPoolSize,//最大线程数 keepAliveTime,//保持时间 unit,//保持时间对应的单位 workQueue, threadFactory,//线程工厂 handler);//异常捕获器 } } } return mThreadPoolExecutor; } /**执行任务*/ public void executeTask(Runnable r) { initExecutor(); mThreadPoolExecutor.execute(r); } /**提交任务*/ public Future<?> commitTask(Runnable r) { initExecutor(); return mThreadPoolExecutor.submit(r); } /**删除任务*/ public void removeTask(Runnable r) { initExecutor(); mThreadPoolExecutor.remove(r); } }
使用方法:
创建线程池代理类和runnable对象
private ThreadPoolProxy threadPoolProxy = new ThreadPoolProxy(1, 1, 3000); private Runnable runnable = new Runnable() { @Override public void run() { //TODO } };
对runnable对象进行操作:
threadPoolProxy.executeTask(runnable);
threadPoolProxy.removeTask(runnable);
相关文章推荐
- c#中子线程控制进度条的一个简单例子
- C#中子线程控制进度条的一个简单例子
- 一个简单的线程池实现(java版)
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- java中可以实现一个线程的方法
- c#中子线程控制进度条的一个简单例子
- c#中子线程控制进度条的一个简单例子
- 【转载】实现一个简单的linux线程池
- 一个简单线程类的实现
- 初识委托和线程并实现一个简单摇奖程序
- c#中子线程控制进度条的一个简单例子 - jinjazz - CSDNBlog
- c#中子线程控制进度条的一个简单例子
- Java实现控制线程超时的简单方法
- c#中子线程控制进度条的一个简单例子
- Linux C++ 一个线程池的简单实现(附代码)
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- 一个简单的线程池实现(java版)
- Java 有几程方法可以实现一个线程?用什么关键字修饰同步?stop()和suspend()为什么不推荐使用?
- 一个简单的线程池实现(java版)
- 有关Python中线程的超时控制以及一个简单的应用