From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 07 四月 2025 15:18:51 +0800 Subject: [PATCH] 整理版本 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java new file mode 100644 index 0000000..ba5b121 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java @@ -0,0 +1,59 @@ +package com.dy.common.mw.protocol; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class PrefixedDataAvailablePool { + + protected static HashMap<String, List<PrefixedDataAvailable>> pool = new HashMap<>() ; + + /** + * 鐢熸垚瀵硅薄 + * 绾跨▼闈炲畨鍏ㄧ殑锛屾墍浠ョ敤鍒皊ynchronized + * @param clazz 棰勫鐞嗙被 + * @return 棰勫鐞嗙被瀵硅薄 + */ + public static synchronized PrefixedDataAvailable getInstance(Class<?> clazz)throws Exception { + if(pool == null){ + pool = new HashMap<>() ; + } + String className = clazz.getName() ; + PrefixedDataAvailable obj = null ; + + List<PrefixedDataAvailable> list = pool.get(className) ; + if(list == null){ + list = new ArrayList<>() ; + pool.put(className, list) ; + }else if(list.size() > 0){ + obj = list.get(0) ; + list.remove(0) ; + } + + if(obj == null){ + try { + obj = (PrefixedDataAvailable)clazz.getDeclaredConstructor().newInstance() ; + //obj = (PrefixedDataAvailable)clazz.newInstance(); + } catch (Exception e) { + throw new Exception( "鐢�" + className + "鐢熸垚瀹炰緥澶辫触锛�"); + } + } + return obj ; + } + + /** + * 鎶婂璞℃斁鍥炴睜涓� + * @param clazz 棰勫鐞嗙被 + * @param obj 棰勫鐞嗙被瀵硅薄 + */ + public static void freeInstance(Class<?> clazz, PrefixedDataAvailable obj) { + if(pool != null){ + String className = clazz.getName() ; + List<PrefixedDataAvailable> list = pool.get(className) ; + if(list != null){ + list.add(obj) ; + } + } + } + +} -- Gitblit v1.8.0