From b3b17b231e2f2840332ce6eb96f791865fdec6d5 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 14 四月 2025 16:38:16 +0800
Subject: [PATCH] 代码优化
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java | 132 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 132 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java
new file mode 100644
index 0000000..5bceac7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java
@@ -0,0 +1,132 @@
+package com.dy.rtuMw.server.rtuData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+
+public class TaskPool {
+
+ private static Logger log = LogManager.getLogger(TaskPool.class.getName()) ;
+
+ private static List<TaskSurpport> tasks = new ArrayList<TaskSurpport>() ;
+
+ private static Integer taskTotal = 0 ;
+
+ private static TreeConfig taskTreeConf ;
+
+
+ public static void setTaskTreeCofig(TreeConfig conf){
+ taskTreeConf = conf ;
+ }
+
+ /**
+ * 寰楀埌浠诲姟鏍戝疄渚嬫�绘暟
+ * @return
+ */
+ public static Integer totalTasks() {
+ return taskTotal ;
+ }
+
+
+ /**
+ * 寰楀埌浠诲姟
+ * 澶氱嚎绋嬬幆澧冧笅杩愯
+ * @return
+ */
+ public static TaskSurpport popTask(){
+ synchronized(tasks){
+ TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ;
+ if(t != null){
+ tasks.remove(0) ;
+ }else{
+ try {
+ t = newTaskTree() ;
+ } catch (Exception e) {
+ log.error(e.getMessage() == null?"瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞℃爲澶辫触锛�" : e.getMessage(), e);
+ } finally {
+ if(t == null){
+ log.error("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞″け璐ワ紒" );
+ }else{
+ taskTotal++ ;
+ }
+ }
+ }
+
+ return t ;
+ }
+ }
+
+ /**
+ * 鏀惧洖浠诲姟
+ * 澶氱嚎绋嬬幆澧冧笅杩愯
+ * 杩欓噷闇�瑕佸悓姝ラ攣锛屽洜涓轰笂闈㈡柟娉曚腑鎵ц瀹宼asks.get(0)涓旀湭鎵цtasks.remove(0)鏈熼棿锛屾湰鏂规硶鎵ц骞朵笖鎵ц瀹岋紝閭d箞鍚庢湡灏变細鍑轰贡瀛�
+ * @param t
+ */
+ public static void freeAndCleanTask(TaskSurpport t){
+ synchronized(tasks) {
+ if (t != null) {
+ boolean find = false;
+ for (TaskSurpport tin : tasks) {
+ if (tin == t) {
+ find = true;
+ break;
+ }
+ }
+ if (!find) {
+ t.cleanMeAndSubs();
+ tasks.add(0, t);
+ }
+ }
+ }
+ }
+
+ /**
+ * 瀹炰緥鍖栦换鍔″璞℃爲
+ * @return
+ * @throws Exception
+ */
+ private static TaskSurpport newTaskTree() throws Exception{
+ TaskSurpport t = null ;
+ if(taskTreeConf != null){
+ t = newTask(null, taskTreeConf.taskConf, taskTreeConf.subTreeConfs) ;
+ }
+ return t ;
+ }
+
+ private static TaskSurpport newTask(TaskSurpport root, TaskConfig taskConf, TreeConfig[] subTreeConfs) throws Exception{
+ TaskSurpport t = null ;
+ if(taskConf != null){
+ t = instanceTask(taskConf.clazz) ;
+ if(t != null){
+ t.conf = taskConf ;
+ t.root = root ;
+ if(root == null){
+ root = t ;
+ }
+ newSubTask(root, t, subTreeConfs);
+ }
+ }
+ return t ;
+ }
+ private static void newSubTask(TaskSurpport root, TaskSurpport parent, TreeConfig[] treeConfs)throws Exception{
+ if(parent != null && treeConfs != null && treeConfs.length > 0){
+ parent.subTasks = new TaskSurpport[treeConfs.length] ;
+ for(int i = 0 ; i < treeConfs.length; i++){
+ parent.subTasks[i] = newTask(root, treeConfs[i].taskConf, treeConfs[i].subTreeConfs) ;
+ }
+ }
+ }
+ private static TaskSurpport instanceTask(String clazz)throws Exception{
+ Class<?> c = Class.forName(clazz);
+ if (c == null) {
+ throw new Exception("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞℃爲澶辫触锛佷换鍔$被涓�" + clazz + "锛�");
+ }else{
+ return (TaskSurpport)c.getDeclaredConstructor().newInstance();
+ //return (TaskSurpport)c.newInstance();
+ }
+ }
+
+}
--
Gitblit v1.8.0