编程语言
首页 > 编程语言> > 分析线程池源码测试线程池

分析线程池源码测试线程池

作者:互联网


import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
* 线程池测试类
*/
public class TestThreadPool {
public static void main(String[] args) {
// 实例化线程池对象 corePoolSize--线程池的基本大小,maximumPoolSize--允许的最大线程数
// KeepAliveTime 线程空闲时间
// TimeUnit.MILLISECONDS 线程默认等待时间
// new ArrayBlockingQueue<Runnable>(5)--阻塞队列,阻塞值为5
ThreadPoolExecutor pool = new ThreadPoolExecutor(5,10,200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(5));
for (int i = 0; i < 14; i++){
MyTask task = new MyTask(i);
pool.execute(task);
System.out.println("线程池中线程数目:"+pool.getPoolSize()+",队列中等待执行的任务数目:"+
pool.getQueue().size()+",已执行完别的任务数目:"+pool.getCompletedTaskCount());
}
}
}

/**
* 自定义线程类
*/
class MyTask implements Runnable{
private int num;
public MyTask(int num){
this.num = num;
}
@Override
public void run() {
System.out.println("正在执行任务:" + num);
try {
Thread.currentThread().sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务" + num + "执行完毕");
}
}

标签:public,num,线程,测试,new,MyTask,源码,pool
来源: https://www.cnblogs.com/givre-foudre/p/12343544.html