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


    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 + "执行完毕");
        }
    }
  • 相关阅读:
    BZOJ 4716 假摔
    【UER #4】量子态的棋盘
    [Lydsy2017省队十连测]最长路径
    [Lydsy2017省队十连测]航海舰队
    [Lydsy2017省队十连测]公路建设
    [Lydsy2017省队十连测]商店购物
    湖南省队集训题【2018】(我也不知道是第几场)
    CXMS 胡策2
    [TJOI2018]异或
    TJOI 2018 数学计算
  • 原文地址:https://www.cnblogs.com/givre-foudre/p/12343544.html
Copyright © 2020-2023  润新知