zoukankan      html  css  js  c++  java
  • Java并发编程:线程池

    代码块:

     1 public class test {
     2     public static void main(String[] args) {
     3         test t = new test();
     4         ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200,
     5                 TimeUnit.MILLISECONDS, new LinkedBlockingDeque<Runnable>(5));
     6 
     7         for (int i = 1; i < 16; i++) {
     8             t.testRun(executor, i);
     9             System.out.println("-- 线程池中的线程数 :" + executor.getPoolSize() +
    10                     " -- 对列中的线程数 :" + executor.getQueue().size() +
    11                     " -- 已执行完的线程数 :" + executor.getCompletedTaskCount());
    12         }
    13         executor.shutdown();
    14         while (true) {
    15             if (executor.isTerminated()) {
    16                 System.out.println("* ------ * 所有线程已结束");
    17                 break;
    18             }
    19             try {
    20                 Thread.sleep(100);
    21             } catch (InterruptedException e) {
    22                 e.printStackTrace();
    23             }
    24         }
    25 
    26     }
    27 
    28     public void testRun(ThreadPoolExecutor executor, final int a) {
    29 
    30         executor.execute(new Thread(new Runnable() {
    31             @Override
    32             public void run() {
    33                 System.out.println("线程 开始 ,线程 :" + a);
    34                 try {
    35                     Thread.sleep(a * 1000);
    36                 } catch (InterruptedException e) {
    37                     e.printStackTrace();
    38                 }
    39                 System.out.println("线程 结束,线程 : " + a);
    40             }
    41         }, "name"));
    42 
    43     }
    44 }

    运行结果:

    线程 开始 ,线程 :1
    -- 线程池中的线程数 :1 -- 对列中的线程数 :0 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :2 -- 对列中的线程数 :0 -- 已执行完的线程数 :0
    线程 开始 ,线程 :2
    -- 线程池中的线程数 :3 -- 对列中的线程数 :0 -- 已执行完的线程数 :0
    线程 开始 ,线程 :3
    -- 线程池中的线程数 :4 -- 对列中的线程数 :0 -- 已执行完的线程数 :0
    线程 开始 ,线程 :4
    -- 线程池中的线程数 :5 -- 对列中的线程数 :0 -- 已执行完的线程数 :0
    线程 开始 ,线程 :5
    -- 线程池中的线程数 :5 -- 对列中的线程数 :1 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :5 -- 对列中的线程数 :2 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :5 -- 对列中的线程数 :3 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :5 -- 对列中的线程数 :4 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :5 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    -- 线程池中的线程数 :6 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    线程 开始 ,线程 :11
    -- 线程池中的线程数 :7 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    线程 开始 ,线程 :12
    -- 线程池中的线程数 :8 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    线程 开始 ,线程 :13
    -- 线程池中的线程数 :9 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    线程 开始 ,线程 :14
    -- 线程池中的线程数 :10 -- 对列中的线程数 :5 -- 已执行完的线程数 :0
    线程 开始 ,线程 :15
    线程 结束,线程 : 1
    线程 开始 ,线程 :6
    线程 结束,线程 : 2
    线程 开始 ,线程 :7
    线程 结束,线程 : 3
    线程 开始 ,线程 :8
    线程 结束,线程 : 4
    线程 开始 ,线程 :9
    线程 结束,线程 : 5
    线程 开始 ,线程 :10
    线程 结束,线程 : 6
    线程 结束,线程 : 7
    线程 结束,线程 : 11
    线程 结束,线程 : 8
    线程 结束,线程 : 12
    线程 结束,线程 : 13
    线程 结束,线程 : 9
    线程 结束,线程 : 14
    线程 结束,线程 : 15
    线程 结束,线程 : 10
    * ------ * 所有线程已结束
    View Code
  • 相关阅读:
    Git连接Github
    全民来打飞机~~(设计探讨)
    mongo学习
    redis aop持久化
    redis的超时删除策略
    redis 学习,没事的时候看看增长知识面
    MySQL query / clause execution order
    用redis做超时判断 感觉写的很有意思
    python 编码问题(转载)
    git 个人学习
  • 原文地址:https://www.cnblogs.com/anitinaj/p/7374546.html
Copyright © 2011-2022 走看看