代码块:
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 }
运行结果:
线程 开始 ,线程 :1View Code
-- 线程池中的线程数 :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
* ------ * 所有线程已结束