From 4342b12d28b15e61bbed4d4d5e64a6a2bacae952 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 27 二月 2024 12:56:11 +0800
Subject: [PATCH] 1、完善代码; 2、实现开闭上报处理

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java |   95 +++++++++++++++++++----------------------------
 1 files changed, 38 insertions(+), 57 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
index 204d758..15cb864 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
@@ -73,38 +73,7 @@
 		/**
 		 * 鏃ュ織 
 		 */
-		private Logger log = LogManager.getLogger(MonitorThread.class.getName());
-		
-		/**
-		 * 寰楀埌榛樿鍞竴瀹炰緥
-		 * @return
-		 */
-//		public MyThreadPool getDefaultInstance(){
-//			if(myPool == null){
-//				myPool = new MyThreadPool(null, null, null, null, null) ;
-//			}
-//			return myPool ;
-//		}
-		/**
-		 * 寰楀埌鍞竴瀹炰緥
-		 * @param poolName
-		 * @param maxNum
-		 * @param minNum
-		 * @param freeTimeout
-		 * @param busyTimeout
-		 * @return
-		 */
-//		public MyThreadPool getInstance(
-//				String poolName , 
-//				Integer maxNum , 
-//				Integer minNum ,
-//				Long freeTimeout ,
-//				Long busyTimeout){
-//			if(myPool == null){
-//				myPool = new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout) ;
-//			}
-//			return myPool ;
-//		}
+		private static final Logger log = LogManager.getLogger(MonitorThread.class) ;
 
 		/**
 		 * 绾跨▼姹犳瀯閫犳柟娉�
@@ -125,8 +94,8 @@
 			}
 			this.poolName = poolName ;
 			
-			if(maxNum == null || maxNum.intValue() <= 0){
-				maxNum = -1 ;
+			if(maxNum == null || maxNum.intValue() < 0){
+				maxNum = 65535 ;
 			}
 			if(minNum == null || minNum.intValue() < 0){
 				minNum = 0 ;
@@ -148,20 +117,19 @@
 			}else{
 				this.busyTimeout = busyTimeout ;	
 			}
-
-			this.busiThreads = new ArrayList<MyThread>();
-			this.freeThreads = new ArrayList<MyThread>();
-
-			//鏈�灏忓寲绾跨▼姹�
-			for (int i = 0; i < this.minNum ; i++) {
-				MyThread t = new MyThread(this);
-				t.start();
-				this.freeThreads.add(t);
-				this.currNum++;
+			if(maxNum != 0){
+				this.busiThreads = new ArrayList<>();
+				this.freeThreads = new ArrayList<>();
+				//鏈�灏忓寲绾跨▼姹�
+				for (int i = 0; i < this.minNum ; i++) {
+					MyThread t = new MyThread(this);
+					t.start();
+					this.freeThreads.add(t);
+					this.currNum++;
+				}
+				this.monitorThread = new MonitorThread(this) ;
+				this.monitorThread.start() ;
 			}
-			
-			this.monitorThread = new MonitorThread(this) ;
-			this.monitorThread.start() ;
 		}
 
 		/**
@@ -171,6 +139,9 @@
 		 */
 		@Override
 		public void putJob(Job job) throws Exception {
+			if(this.busiThreads == null || this.freeThreads == null){
+				throw new Exception("绾跨▼姹犳湭鍚姩") ;
+			}
 			synchronized(this.synObj) {
 				//log.debug("宸ヤ綔浠诲姟鍒嗛厤鍒扮嚎绋嬫睜涓��") ;
 				MyThread t = null ;
@@ -215,7 +186,10 @@
 		/**
 		 * 绾跨▼宸ヤ綔瀹屾垚锛屼粠busiThreads鍥炲綊freeThreads
 		 */
-		protected void freeThread(MyThread t) {
+		protected void freeThread(MyThread t) throws Exception {
+			if(this.busiThreads == null || this.freeThreads == null){
+				throw new Exception("绾跨▼姹犳湭鍚姩") ;
+			}
 			synchronized (synObj) {
 				busiThreads.remove(t);
 				freeThreads.add(t);
@@ -236,7 +210,7 @@
 
 			/**
 			 * 
-			 * @param pool
+			 * @param pool 姹�
 			 */
 			public MonitorThread(MyThreadPool pool){
 				this.pool = pool ;
@@ -302,6 +276,7 @@
 							}
 						}//end synchronized (pool.synObj)
 					}catch(Exception e){
+						e.printStackTrace();
 					}finally{
 						continue ;
 					}
@@ -354,7 +329,7 @@
 		
 		/**
 		 * 璁剧疆绾跨▼宸ヤ綔瀵硅薄
-		 * @param job
+		 * @param job 宸ヤ綔
 		 */
 		protected void putJob(Job job) throws Exception {
 			if(job == null){
@@ -418,13 +393,19 @@
 		}
 		
 		public void free(){
-			//浣挎湰绾跨▼鍥炲綊绌洪棽绾跨▼姹�
-			pool.freeThread(this);
-			//绌洪棽寮�濮嬭鏃�
-			this.time = System.currentTimeMillis() ;
-			// 娌℃湁鍙仛鐨勪簡
-			this.canJob = false;
-			log.debug("绾跨▼姹�(" + this.pool.poolName + ")涓殑绾跨▼鍥炲綊绌洪棽闆嗗悎銆�");
+			try{
+				//浣挎湰绾跨▼鍥炲綊绌洪棽绾跨▼姹�
+				pool.freeThread(this);
+				//绌洪棽寮�濮嬭鏃�
+				this.time = System.currentTimeMillis() ;
+				// 娌℃湁鍙仛鐨勪簡
+				this.canJob = false;
+				log.debug("绾跨▼姹�(" + this.pool.poolName + ")涓殑绾跨▼鍥炲綊绌洪棽闆嗗悎銆�");
+			}catch (Exception e){
+				log.error("绾跨▼姹�(" + pool.poolName + ")鐨勫伐浣滅嚎绋嬮噴鏀惧洖褰掓椂鍙戠敓寮傚父:\n" + e.getMessage(), e);
+				e.printStackTrace();
+			}
+
 		}
 
 		/**

--
Gitblit v1.8.0