Java並發編程:線程池 - 實例
阿新 • • 發佈:2017-08-16
task link ide isp ole 開始 size new exceptio
代碼塊:
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並發編程:線程池 - 實例