package com.fourinone; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.BlockingQueue; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ScheduledThreadPoolExecutor; class PoolExector //java.io.Closeable { private static ThreadPoolExecutor tpe; private static ScheduledThreadPoolExecutor stpe; static ThreadPoolExecutor tpe() { if(tpe==null) { int corePoolSize = ConfigContext.getInitServices(); int maximumPoolSize = ConfigContext.getMaxServices(); long keepAliveTime = 3000; TimeUnit unit = TimeUnit.MILLISECONDS; BlockingQueue<Runnable> waitQueue = new ArrayBlockingQueue<Runnable>(2000); RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();//ThreadPoolExecutor.CallerRunsPolicy(); tpe =new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, waitQueue, handler); } return tpe; } static ScheduledThreadPoolExecutor stpe() { if(stpe==null) { int corePoolSize = ConfigContext.getInitServices(); stpe =new ScheduledThreadPoolExecutor(corePoolSize); } return stpe; } static void execute(Runnable d, Runnable i, long t){ tpe().execute(d); if(t>0) stpe().schedule(i,t,TimeUnit.SECONDS); } static void close(){ if(tpe!=null){ try{ tpe.shutdown(); tpe=null; }catch(SecurityException se){ LogUtil.info("[tpe]", "[close]", "[Error Exception:]", se); } } if(stpe!=null){ try{ stpe.shutdown(); stpe=null; }catch(SecurityException se){ LogUtil.info("[stpe]", "[close]", "[Error Exception:]", se); } } } }