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

Posted anitinaj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Java并发编程:线程池 - 实例的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程与技术内幕:线程池深入理解

Java高并发编程实战5,异步注解@Async自定义线程池

Java高并发编程实战5,异步注解@Async自定义线程池

Java并发编程与技术内幕:线程池深入理解

Java并发编程volatile域

转:Java并发编程之十九:并发新特性—Executor框架与线程池(含代码)