package com.dy.common.mw.protocol; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
  
 | 
public class OnLinePool { 
 | 
     
 | 
    protected static HashMap<String, List<OnLine>> pool = new HashMap<>() ; 
 | 
     
 | 
    /** 
 | 
     * 生成对象 
 | 
     * @param clazz 类型 
 | 
     * @return OnLine 
 | 
     */ 
 | 
    public static synchronized OnLine getInstance(Class<?> clazz)throws Exception { 
 | 
        if(pool == null){ 
 | 
            pool = new HashMap<>() ; 
 | 
        } 
 | 
        String className = clazz.getName() ; 
 | 
        OnLine obj = null ; 
 | 
         
 | 
        List<OnLine> list = pool.get(className) ; 
 | 
        if(list == null){ 
 | 
            list = new ArrayList<>() ; 
 | 
        }else{ 
 | 
            obj = list.get(0) ; 
 | 
        } 
 | 
         
 | 
        if(obj != null){ 
 | 
            list.remove(0) ; 
 | 
            return obj ; 
 | 
        }else{ 
 | 
            try { 
 | 
                obj = (OnLine)clazz.getDeclaredConstructor().newInstance() ; 
 | 
                //obj = (OnLine)clazz.newInstance(); 
 | 
            } catch (Exception e) { 
 | 
                throw new Exception( "由" + className + "生成实例失败!"); 
 | 
            } 
 | 
            return obj ; 
 | 
        } 
 | 
    } 
 | 
     
 | 
    /** 
 | 
     * 把对象放回池中 
 | 
     * @param clazz 类 
 | 
     * @param obj 上线对象 
 | 
     */ 
 | 
    public static void freeInstance(Class<?> clazz, OnLine obj){ 
 | 
        if(pool != null){ 
 | 
            String className = clazz.getName() ; 
 | 
            List<OnLine> list = pool.get(className) ; 
 | 
            if(list != null){ 
 | 
                list.add(obj) ; 
 | 
            } 
 | 
        } 
 | 
    }     
 | 
     
 | 
} 
 |