Java并发编程:线程池

时间:2021-11-13 14:48:41

 

 

代码块:

 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