• 线程池1


    任务类:

    package com._ThreadPool;
    
    public class MyTask implements Runnable {
        private int taskId;
        public MyTask(int id){
            this.taskId = id;
        }
        @Override
        public void run() {
            System.out.println("Mytask" + taskId +"开始执行 ");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Mytask" + taskId + "执行结束 ");
        }
    }

    线程池1:

    package com._ThreadPool;
    
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.Executor;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    public class MyExecutor {
    
        public static void main(String[] args) {
            ThreadPoolExecutor executor = new ThreadPoolExecutor(5,10,200,TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(5));
    
            for(int i = 0 ;i < 15 ;i ++){
                MyTask task = new MyTask(i);
                executor.execute(task);
                System.out.println("线程池中的线程数量" + executor.getPoolSize()+
                    "队列中等待的数目" + executor.getQueue().size() +
                    "已经执行完的任务数目" + executor.getCompletedTaskCount());
            }
    
            executor.shutdown();
        }
    
    }

    结果:

    Mytask0开始执行 
    线程池中的线程数量1队列中等待的数目0已经执行完的任务数目0
    线程池中的线程数量2队列中等待的数目0已经执行完的任务数目0
    Mytask1开始执行 
    线程池中的线程数量3队列中等待的数目0已经执行完的任务数目0
    Mytask2开始执行 
    线程池中的线程数量4队列中等待的数目0已经执行完的任务数目0
    Mytask3开始执行 
    线程池中的线程数量5队列中等待的数目0已经执行完的任务数目0
    Mytask4开始执行 
    线程池中的线程数量5队列中等待的数目1已经执行完的任务数目0
    线程池中的线程数量5队列中等待的数目2已经执行完的任务数目0
    线程池中的线程数量5队列中等待的数目3已经执行完的任务数目0
    线程池中的线程数量5队列中等待的数目4已经执行完的任务数目0
    线程池中的线程数量5队列中等待的数目5已经执行完的任务数目0
    线程池中的线程数量6队列中等待的数目5已经执行完的任务数目0
    Mytask10开始执行 
    线程池中的线程数量7队列中等待的数目5已经执行完的任务数目0
    Mytask11开始执行 
    线程池中的线程数量8队列中等待的数目5已经执行完的任务数目0
    Mytask12开始执行 
    线程池中的线程数量9队列中等待的数目5已经执行完的任务数目0
    Mytask13开始执行 
    线程池中的线程数量10队列中等待的数目5已经执行完的任务数目0
    Mytask14开始执行 
    Mytask0执行结束 
    Mytask5开始执行 
    Mytask3执行结束 
    Mytask14执行结束 
    Mytask13执行结束 
    Mytask11执行结束 
    Mytask1执行结束 
    Mytask2执行结束 
    Mytask10执行结束 
    Mytask4执行结束 
    Mytask12执行结束 
    Mytask9开始执行 
    Mytask8开始执行 
    Mytask7开始执行 
    Mytask6开始执行 
    Mytask5执行结束 
    Mytask7执行结束 
    Mytask6执行结束 
    Mytask8执行结束 
    Mytask9执行结束 
    
    Process finished with exit code 0

    首先填满核心线程数,然后填满队列,然后填满最大线程数。

  • 相关阅读:
    重拾node第一天
    layui采坑记录 (上卷)QUQ
    解决IOS固定定位 fixed的不兼容
    layui 启用禁用切换详解
    jq form表单渲染单选框内容渲染
    vue 工具函数的封装 时间格式化函数
    CSS常见的继承属性
    git简单使用指南
    常用git命令大全
    react项目使用antd
  • 原文地址:https://www.cnblogs.com/da-peng/p/9821709.html
Copyright © 2020-2023  润新知