首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ThreadPoolExecutor-兑现自定义线程池

2012-09-19 
ThreadPoolExecutor-实现自定义线程池?自定义连接池稍微麻烦些,不过通过创建的ThreadPoolExecutor线程池对

ThreadPoolExecutor-实现自定义线程池

?

自定义连接池稍微麻烦些,不过通过创建的ThreadPoolExecutor线程池对象,可以获取到当前线程池的尺寸、正在执行任务的线程数、工作队列等等.

?

下面创建一个执行任务类继承至Thread类,也可以实现Runnable接口,效果一样.

package pack.java.custom;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;/** * 自定义线程池; * @author zhouhaitao * 2012-4-11 */public class CustomThreadPool {/** * @param args */public static void main(String[] args) {//创建等待队列;BlockingQueue<Runnable> blockingQueue = new ArrayBlockingQueue<Runnable>(20);//创建一个单线程执行程序,它可以安排在指定的时间执行或者定期执行;ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 5, 2, TimeUnit.MILLISECONDS, blockingQueue);Thread thread1 = new RunnableTask(1);Thread thread2 = new RunnableTask(2);Thread thread3 = new RunnableTask(3);pool.execute(thread1);pool.execute(thread2);pool.execute(thread3);//关闭线程池;pool.shutdown();}}

?

?

执行结果:

----------------------------------------------------

0
1
2
线程1执行完成.
0
1
2
线程3执行完成.
0
1
2
线程2执行完成.

?

ThreadPoolExecutor构造方法参数介绍:


public ThreadPoolExecutor(int corePoolSize,??
????????????????????????? int maximumPoolSize,??
????????????????????????? long keepAliveTime,??
????????????????????????? TimeUnit unit,??
????????????????????????? BlockingQueue<Runnable> workQueue)
用给定的初始参数和默认的线程工厂及处理程序创建新的 ThreadPoolExecutor。
使用 Executors 工厂方法之一比使用此通用构造方法方便得多。?

?
参数:???
corePoolSize - 池中所保存的线程数,包括空闲线程。???
maximumPoolSize - 池中允许的最大线程数。???
keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。???
unit - keepAliveTime 参数的时间单位。???
workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。???
抛出:???
IllegalArgumentException - 如果 corePoolSize 或 keepAliveTime 小于零,
或者 maximumPoolSize 小于或等于零,或者 corePoolSize 大于 maximumPoolSize。???
NullPointerException - 如果 workQueue 为 null?

?

?

引用:

http://longzhun.iteye.com/blog/1404836

热点排行