From 7c98e347015e96a7683dbb08b36495c75c54bea5 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期二, 28 十一月 2023 08:33:22 +0800
Subject: [PATCH] 回退
---
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java | 92 +++++++++++++++++++++++++++------------------
1 files changed, 55 insertions(+), 37 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 8ec40ae..204d758 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
@@ -75,6 +75,36 @@
*/
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 ;
+// }
/**
* 绾跨▼姹犳瀯閫犳柟娉�
@@ -95,8 +125,8 @@
}
this.poolName = poolName ;
- if(maxNum == null || maxNum.intValue() < 0){
- maxNum = 65535 ;
+ if(maxNum == null || maxNum.intValue() <= 0){
+ maxNum = -1 ;
}
if(minNum == null || minNum.intValue() < 0){
minNum = 0 ;
@@ -118,19 +148,20 @@
}else{
this.busyTimeout = busyTimeout ;
}
- 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.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++;
}
+
+ this.monitorThread = new MonitorThread(this) ;
+ this.monitorThread.start() ;
}
/**
@@ -140,9 +171,6 @@
*/
@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 ;
@@ -187,10 +215,7 @@
/**
* 绾跨▼宸ヤ綔瀹屾垚锛屼粠busiThreads鍥炲綊freeThreads
*/
- protected void freeThread(MyThread t) throws Exception {
- if(this.busiThreads == null || this.freeThreads == null){
- throw new Exception("绾跨▼姹犳湭鍚姩") ;
- }
+ protected void freeThread(MyThread t) {
synchronized (synObj) {
busiThreads.remove(t);
freeThreads.add(t);
@@ -211,7 +236,7 @@
/**
*
- * @param pool 姹�
+ * @param pool
*/
public MonitorThread(MyThreadPool pool){
this.pool = pool ;
@@ -277,7 +302,6 @@
}
}//end synchronized (pool.synObj)
}catch(Exception e){
- e.printStackTrace();
}finally{
continue ;
}
@@ -330,7 +354,7 @@
/**
* 璁剧疆绾跨▼宸ヤ綔瀵硅薄
- * @param job 宸ヤ綔
+ * @param job
*/
protected void putJob(Job job) throws Exception {
if(job == null){
@@ -394,19 +418,13 @@
}
public void free(){
- 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();
- }
-
+ //浣挎湰绾跨▼鍥炲綊绌洪棽绾跨▼姹�
+ pool.freeThread(this);
+ //绌洪棽寮�濮嬭鏃�
+ this.time = System.currentTimeMillis() ;
+ // 娌℃湁鍙仛鐨勪簡
+ this.canJob = false;
+ log.debug("绾跨▼姹�(" + this.pool.poolName + ")涓殑绾跨▼鍥炲綊绌洪棽闆嗗悎銆�");
}
/**
--
Gitblit v1.8.0