| package com.dy.common.mw.support; | 
|   | 
|   | 
| import com.dy.common.threadPool.TreadPoolFactory; | 
| import com.dy.common.mw.UnitAdapterInterface; | 
| import com.dy.common.mw.UnitInterface; | 
| import com.dy.common.mw.UnitStartedCallbackInterface; | 
|   | 
| public class SupportUnit implements UnitInterface { | 
|      | 
|     private final static SupportUnit instance = new SupportUnit() ; | 
|     private static boolean started = false ; | 
|      | 
|     private SupportUnitAdapter adapter ; | 
|      | 
|     private SupportUnitConfigVo confVo ; | 
|      | 
|   | 
|     private SupportUnit(){} | 
|      | 
|     public static SupportUnit getInstance(){ | 
|         return instance ; | 
|     } | 
|      | 
|     @Override | 
|     public void setAdapter(UnitAdapterInterface adapter) throws Exception { | 
|         if(adapter == null){ | 
|             throw new Exception("支持模块适配器对象不能为空!") ; | 
|         } | 
|          | 
|         this.adapter = (SupportUnitAdapter)adapter ;  | 
|         this.confVo = this.adapter.getConfig() ; | 
|         if(this.confVo == null){ | 
|             throw new Exception("支持模块配置对象不能为空!") ; | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public void start(UnitStartedCallbackInterface callback) throws Exception { | 
|         if(!started){ | 
|             started = true ; | 
|             if(confVo.enableShortThreadPool) { | 
|                 TreadPoolFactory.initThreadPoolShort("短任务工作线程池", | 
|                         this.confVo.short_maxThread, | 
|                         this.confVo.short_minThread, | 
|                         this.confVo.short_freeTimeout, | 
|                         this.confVo.short_busyTimeout); | 
|             }else{ | 
|                 System.out.println("短线程池配置不启动"); | 
|             } | 
|             if(confVo.enableLongThreadPool) { | 
|                 TreadPoolFactory.initThreadPoolLong("长任务工作线程池", | 
|                         this.confVo.long_maxThread, | 
|                         this.confVo.long_minThread, | 
|                         this.confVo.long_freeTimeout, | 
|                         this.confVo.long_busyTimeout); | 
|             }else{ | 
|                 System.out.println("长线程池配置不启动"); | 
|             } | 
|             if(this.confVo.showStartInfo){ | 
|                 System.out.println("线程池模块成功启动"); | 
|             } | 
|         } | 
|         callback.call(null); | 
|     } | 
|   | 
|     @Override | 
|     public void stop(UnitStartedCallbackInterface callback) { | 
|     } | 
|      | 
|     /* | 
|     public static void main(String[] args) throws Exception{ | 
|         SupportUnitConfigVo supVo = new SupportUnitConfigVo() ; | 
|         //短工作时长线程池,线程负责用时较短的工作任务 | 
|         supVo.short_maxThread = 100 ; | 
|         supVo.short_freeTimeout = 5 ; | 
|         supVo.short_busyTimeout = 60 ; | 
|         //长工作时长线程池,线程负责用时较长的工作任务 | 
|         supVo.long_maxThread = 200 ; | 
|         if(supVo.long_maxThread < 0){ | 
|             supVo.long_maxThread = -1 ; | 
|         } | 
|         supVo.long_minThread = 0 ;  | 
|         supVo.long_freeTimeout = 60 ; | 
|         supVo.long_busyTimeout = -1 ; | 
|         if(supVo.long_busyTimeout < 0){ | 
|             supVo.long_busyTimeout = -1 ; | 
|         } | 
|          | 
|         supVo.enableThreadPool = true ; | 
|          | 
|         supVo.showStartInfo = true ; | 
|   | 
|         SupportUnit supUnit = SupportUnit.getInstance() ; | 
|          | 
|         AdapterImp_SupportUnit supAdap = new AdapterImp_SupportUnit(); | 
|         supAdap.setConfig(supVo); | 
|         supUnit.setAdapter(supAdap); | 
|         supUnit.start(obj -> { | 
|         }); | 
|     } | 
|     private static class AdapterImp_SupportUnit implements SupportUnitAdapter { | 
|          | 
|         private SupportUnitConfigVo configVo = null ; | 
|   | 
|         @Override | 
|         public SupportUnitConfigVo getConfig() { | 
|             return this.configVo; | 
|         } | 
|   | 
|         public void setConfig(SupportUnitConfigVo configVo) { | 
|             this.configVo = configVo; | 
|         } | 
|     } | 
|     */ | 
| } |