读书人

构建高性能工作线程 2 扩展 Spring 线

发布时间: 2012-12-23 11:28:15 作者: rapoo

构建高性能工作线程 二 扩展 Spring 线程池

扩展SPRING 2.0的threadPooltaskExecutor

public class MyThreadPoolTaskExecutor implements SchedulingTaskExecutor,Executor, InitializingBean, DisposableBean {    public void afterPropertiesSet() {        initialize();    }    public void initialize() {        BlockingQueue queue = createQueue(queueCapacity);        executorService = new ThreadPoolExecutor(corePoolSize,              maxPoolSize,keepAliveSeconds, TimeUnit.SECONDS, queue,              threadFactory,rejectedExecutionHandler);        threadPoolMap.put(this.getThreadPoolName(), this);    }    public boolean prefersShortLivedTasks() {        return true;    }    public void destroy() {        shutdown();    }    public void shutdown() {        executorService.shutdown();    }    public String getThreadPoolName() {        return threadPoolName;    }    public void setThreadPoolName(String threadPoolName) {        this.threadPoolName = threadPoolName;    }    public int getQueueCapacity() {        return queueCapacity;    }    public static Map getThreadPoolMap(){        return threadPoolMap;    }}

?

<!--  线程池进行初始化   --><bean id="beenCoverTaskExecutor" value="5" />    <!-- 最大线程数,默认为Integer.MAX_VALUE -->    <property name="maxPoolSize" value="10" />    <!-- 队列最大长度,一般需要设置值>=notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE -->    <property name="queueCapacity" value="50000" />    <!-- 线程池维护线程所允许的空闲时间,默认为60s -->    <property name="keepAliveSeconds" value="300" />    <!-- 线程池名称 -->    <property name="threadPoolName" value="beenCoverTaskExecutor" />    <!-- 线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->    <property name="rejectedExecutionHandler">    <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->    <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 -->    <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->    <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->    <bean />    </property></bean>

?

读书人网 >编程

热点推荐