首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

构建高性能工作线程 3 工作线程

2012-12-30 
构建高性能工作线程 三 工作线程工作线程public abstract class WorkThread implements Runnable, Seriali

构建高性能工作线程 三 工作线程

工作线程

public abstract class WorkThread implements Runnable, Serializable{    /** 线程池的参数是否改变 */    private boolean isPoolSizeAliveTimeModf = false;    /** JDK 线程池 spring封装 扩展实现的线程池 */    private MyThreadPoolTaskExecutor taskExecutor;    /** 核心线程数 */    private static int corePoolSize;    /** 最大线程数 */    private static int maximumPoolSize;    /** 线程池维护线程所允许的空闲时间 */    private static int keepAliveTime;    public WorkThread(TaskExecutor taskExecutor) {      this.taskExecutor = (MyThreadPoolTaskExecutor) taskExecutor;    }        public final void run() {        try {             // 如果线程池参数有变化,则重置          if (isPoolSizeAliveTimeModf()) {                 taskExecutor.setCorePoolSize(corePoolSize);                 taskExecutor.setMaxPoolSize(maximumPoolSize);                 taskExecutor.setKeepAliveSeconds(keepAliveTime);            }            //抽象函数,供子类实现            doTask();        } catch (Exception e) {            e.printStackTrace();        }    }        //任务工作    public abstract void doTask() throws Exception;   //获取缓冲队列QUEUE,用于维护监控   public BlockingQueue getQueue() {        return taskExecutor.getThreadPoolExecutor().getQueue();   }   //获取队列size,用于维护监控   public int getQueueSize() {      if (this.getQueue() instanceof LinkedBlockingQueue) {         return this.getQueue().size();      } else {         return this.getQueue().size();      }   }   //如果线程池中的参数有变化,自动调用update方法   public void update(Observable observable, Object obj) {       if (obj instanceof Map) {           HashMap<String, Integer> poolMap = (HashMap<String, Integer>) obj;           //打印 线程池  历史大小 和 要更改的大小       corePoolSize = poolMap.get("corePoolSize");           maximumPoolSize = poolMap.get("maximumPoolSize");           keepAliveTime = poolMap.get("keepAliveTime");           //一定要把值设到线程池中       taskExecutor.setCorePoolSize(corePoolSize);           taskExecutor.setMaxPoolSize(maximumPoolSize);           taskExecutor.setKeepAliveSeconds(keepAliveTime);       }   }   public MyThreadPoolTaskExecutor getTaskExecutor() {      return taskExecutor;   }   public void setMaximumPoolSize(int maximumPoolSize) {      this.maximumPoolSize = maximumPoolSize;   }   public boolean isPoolSizeAliveTimeModf() {      return isPoolSizeAliveTimeModf;   }   public void setKeepAliveTime(int keepAliveTime) {      this.keepAliveTime = keepAliveTime;   }}

?






热点排行