【Java】ExecutorService線程池示例

package com;

import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService ;
import java.util.concurrent.Executors;

/**
 *
 * @author Administrator
 *
 */
public class ExecutorTest extends Thread {

      /**
       * CPU核數
       */
      static final int preceCount = Runtime.getRuntime().availableProcessors();

      static ExecutorService exec = Executors.newFixedThreadPool(preceCount);

      static List<Integer> list = new ArrayList<Integer>();

      /**
       * 集合數量
       */
      static int count = 10000;

      public static void main(String[] args) {
            ExecutorTest test = new ExecutorTest();
             test.init();
             test.run();
      }

      /**
       * 初始化List
       */
      void init() {
             for ( int i = 0; i < count; i++) {
                   list.add( i);
            }
      }

      @Override
      public void run() {
             final CountDownLatch countDown = new CountDownLatch( count);
             for (Integer i : list) {
                   final int j = i;
                   exec.submit( new Runnable() {                    
                         @Override
                         public void run() {
                               // TODO Auto-generated method stub
                               try {
                                    System. out.println( ">>" + j);
                              } catch (Exception e) {
                                     // TODO: handle exception
                              } finally {
                                     countDown.countDown();
                              }
                        }
                  });
            }
      }     
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章