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 * ------ * 所有线程已结束
以上是关于Java并发编程:线程池 - 实例的主要内容,如果未能解决你的问题,请参考以下文章