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