| | |
| | | |
| | | public class PrefixedDataAvailablePool { |
| | | |
| | | protected static HashMap<String, List<PrefixedDataAvailable>> pool = new HashMap<String, List<PrefixedDataAvailable>>() ; |
| | | protected static HashMap<String, List<PrefixedDataAvailable>> pool = new HashMap<>() ; |
| | | |
| | | /** |
| | | * 生成对象 |
| | | * 线程非安全的,所以用到synchronized |
| | | * @param className |
| | | * @return |
| | | * @param clazz 预处理类 |
| | | * @return 预处理类对象 |
| | | */ |
| | | public static synchronized PrefixedDataAvailable getInstance(Class<?> clazz)throws Exception { |
| | | if(pool == null){ |
| | | pool = new HashMap<String, List<PrefixedDataAvailable>>() ; |
| | | pool = new HashMap<>() ; |
| | | } |
| | | String className = clazz.getName() ; |
| | | PrefixedDataAvailable obj = null ; |
| | | |
| | | List<PrefixedDataAvailable> list = pool.get(className) ; |
| | | if(list == null){ |
| | | list = new ArrayList<PrefixedDataAvailable>() ; |
| | | list = new ArrayList<>() ; |
| | | }else{ |
| | | obj = list.get(0) ; |
| | | } |
| | |
| | | return obj ; |
| | | }else{ |
| | | try { |
| | | obj = (PrefixedDataAvailable)clazz.newInstance(); |
| | | obj = (PrefixedDataAvailable)clazz.getDeclaredConstructor().newInstance() ; |
| | | //obj = (PrefixedDataAvailable)clazz.newInstance(); |
| | | } catch (Exception e) { |
| | | throw new Exception( "由" + className + "生成实例失败!"); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 把对象放回池中 |
| | | * @param className |
| | | * @return |
| | | * @param clazz 预处理类 |
| | | * @param obj 预处理类对象 |
| | | */ |
| | | public static void freeInstance(Class<?> clazz, PrefixedDataAvailable obj)throws Exception { |
| | | public static void freeInstance(Class<?> clazz, PrefixedDataAvailable obj) { |
| | | if(pool != null){ |
| | | String className = clazz.getName() ; |
| | | List<PrefixedDataAvailable> list = pool.get(className) ; |