package com.dy.common.threadPool; 
 | 
  
 | 
  
 | 
public class TreadPoolFactory { 
 | 
  
 | 
    private static ThreadPool.Pool pool_short ;//短工作任务线程池,线程工作用时较短 
 | 
    private static ThreadPool.Pool pool_long ;//长工作任务线程池,线程工作用时较长 
 | 
     
 | 
    /** 
 | 
     * 初始化线程池 
 | 
     * @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 ; 
 | 
    } 
 | 
  
 | 
} 
 |