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

Posted givre-foudre

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分析线程池源码测试线程池相关的知识,希望对你有一定的参考价值。

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 + "执行完毕");
    }
}

 

以上是关于分析线程池源码测试线程池的主要内容,如果未能解决你的问题,请参考以下文章

Java线程池详解

线程池ThreadPoolExecutor源码分析

Java线程池源码分析

ElasticSearch 线程池类型分析之SizeBlockingQueue

从源码分析创建线程池的4种方式

源码分析——线程池创建原理分析