• 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
  • 相关阅读:
    What's New in Chrome DevTools All In One
    User Timing API All In One
    Tailwind CSS All In One
    CSS 3D rotate with mouse move All In One
    Event Timing API All In One
    Long Tasks API All In One
    js get window custom global variables All In One
    Web 前端广告落地页性能监控系统 All In One
    Element Timing API All In One
    base64编码
  • 原文地址:https://www.cnblogs.com/anitinaj/p/7374546.html
Copyright © 2020-2023  润新知