wuzeyu
2023-11-27 7c98e347015e96a7683dbb08b36495c75c54bea5
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 + ")中的线程回归空闲集合。");
      }
      /**