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 }

运行结果:

《Java并发编程:线程池 - 实例》
《Java并发编程:线程池 - 实例》

线程 开始 ,线程 :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

 

    原文作者:anitinaj
    原文地址: https://www.cnblogs.com/anitinaj/p/7374546.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞