zoukankan      html  css  js  c++  java
  • 线程池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

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

  • 相关阅读:
    序列点,相关知识
    6.13 关键概念
    6.9 如何选择循环
    6.8 出口条件循环:do while
    6.7 逗号运算符
    6.6 其他赋值运算符:+=、-=、*=、/=、%=
    6.3.4 新的_Bool类型
    Oracle的表导入到PowerDesigner
    PowerDesigner连接Oracle数据库
    加了日期条件后查询结果慢了100倍
  • 原文地址:https://www.cnblogs.com/da-peng/p/9821709.html
Copyright © 2011-2022 走看看