| 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) ; | 
|             } | 
|         } | 
|     }     | 
|      | 
| } |