zuoxiao
3 天以前 4513ef24bf9b188c2a77d6ce94f1a6b7e9ebf0e6
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java
New file
@@ -0,0 +1,97 @@
package com.dy.common.threadPool;
public class TreadPoolFactory {
   private static ThreadPool.Pool pool_short ;//短工作任务线程池,线程工作用时较短
   private static ThreadPool.Pool pool_long ;//长工作任务线程池,线程工作用时较长
   public final static Integer[] pool_short_state(){
      Integer shortCurThread = 0 ;//短线程池当前线程数
      Integer shortMaxThread = 0 ;//短线程池最大线程数
      Integer shortMinThread = 0 ;//短线程池最小线程数
      shortCurThread = pool_short.size() ;
      shortMaxThread = pool_short.maxThread() ;
      shortMinThread = pool_short.minThread() ;
      return new Integer[]{shortCurThread, shortMaxThread, shortMinThread} ;
   }
   public final static Integer[] pool_long_state(){
      Integer longCurThread = 0 ;//短线程池当前线程数
      Integer longMaxThread = 0 ;//短线程池最大线程数
      Integer longMinThread = 0 ;//短线程池最小线程数
      longCurThread = pool_long.size() ;
      longMaxThread = pool_long.maxThread() ;
      longMinThread = pool_long.minThread() ;
      return new Integer[]{longCurThread, longMaxThread, longMinThread} ;
   }
   /**
    * 初始化线程池
    * @param poolName 线程池和线程名称
    * @param maxNum 线程池最大线程数 ,若为-1,不受限制
    * @param minNum 线程池最小线程数,或初始线程数
    * @param freeTimeout 空闲线程超时时长(秒)
    * @param busyTimeout 忙碌线程超时时长(秒),若为-1,不受限制
    * @return 线程池实例
    */
   public final static void initThreadPoolShort(String poolName,
         int maxNum,
         int minNum,
         long freeTimeout,
         long busyTimeout) throws Exception {
      if(pool_short!= null){
         throw new Exception("线程池不能重复初始化!");
      }
      if(pool_short == null){
         pool_short = new ThreadPoolImp().new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout);
      }
   }
   /**
    * 初始化线程池
    * @param poolName 线程池和线程名称
    * @param maxNum 线程池最大线程数,若为-1,不受限制
    * @param minNum 线程池最小线程数,或初始线程数
    * @param freeTimeout 空闲线程超时时长(秒)
    * @param busyTimeout 忙碌线程超时时长(秒),若为-1,不受限制
    * @return 线程池实例
    */
   public final static void initThreadPoolLong(String poolName,
         int maxNum,
         int minNum,
         long freeTimeout,
         long busyTimeout) throws Exception {
      if(pool_long!= null){
         throw new Exception("线程池不能重复初始化!");
      }
      if(pool_long == null){
         pool_long =  new ThreadPoolImp().new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout);
      }
   }
   /**
    * 得到唯一线程池实例
    * @return
    * @throws Exception
    */
   public final static ThreadPool.Pool getThreadPoolShort()
      throws Exception {
      if (pool_short == null) {
         throw new Exception("得到线程池前首先必须初始化!");
      }
      return pool_short ;
   }
   /**
    * 得到唯一线程池实例
    * @return
    * @throws Exception
    */
   public final static ThreadPool.Pool getThreadPoolLong()
      throws Exception {
      if (pool_long == null) {
         throw new Exception("得到线程池前首先必须初始化!");
      }
      return pool_long ;
   }
}