1. 程式人生 > >Java並發編程:線程池 - 實例

Java並發編程:線程池 - 實例

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並發編程:線程池 - 實例