`
lishaorui
  • 浏览: 148768 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用Spring的taskExecutor实现线程池

阅读更多
最近,由于项目里需要用到线程池来提高处理速度,记录一下spring的taskExecutor执行器来实现线程池。

这里省略了Service接口的定义和在applicationContext.xml文件中配置相应的bean(service)。

1、处理器实现类
package com.shine.job;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.task.TaskExecutor;

import com.shine.service.Service;

/**
 *  处理器接口实现类
 */
public class ProcessorImpl implements Processor {

	// 日志对象
	private static Log logger = LogFactory.getLog(ProcessorImpl.class);
	
	// 执行器
	private TaskExecutor taskExecutor;
	
	// 业务接口
	private Service service;

	public void process() {
		    // 使用多线程处理
			taskExecutor.execute(new Runnable(){
				public void run() {
					try {
					    logger.debug("[Thread "
						+ Thread.currentThread().getId()
						+ " start]");
                        // 业务处理
						service.handle(name);
						logger.debug("[Thread "
						+ Thread.currentThread().getId()
						+ " end]");
					} catch (RuntimeException e) {
						logger.error("Service handle exception",e);
					}
				}
			});
		}
	}
	
	public void setService(Service service) {
		this.service = service;
	}

	public void setTaskExecutor(TaskExecutor taskExecutor) {
		this.taskExecutor = taskExecutor;
	}
	
}


2、applicationContext.xml配置
  <!--  线程池(执行器) --> 
  <task:executor id="taskExecutor" pool-size="1-4" queue-capacity="128" /> 

  <!--  处理接口  --> 
  <bean id="processor" class="com.shine.job.ProcessorImpl">
        <property name="service" ref="service" /> 
        <property name="taskExecutor">
        	<ref bean="taskExecutor" /> 
        </property>
  </bean>


其中:
pool-size="1-4",表示线程池活跃的线程数为1,最大线程数为4;
queue-capacity="128",表示任务队列的最大容量。

PS:关于taskExecutor还有一种配置bean来实现的,其配置的写法和参数与上面基本一致。
分享到:
评论

相关推荐

    Java面试 spring知识点 线程池 面试题

    Spring原理 2 Spring ioc 原理 3 Bean生命周期 3 Java反射 4 beanfactory和applicationcontext 5 类装载器ClassLoader 6 Spring aop 原理 6 Aop代理 7 Spring 事物 10 ...Spring TaskExecutor线程池 16

    spring TaskExecutor.docx

    Spring 2.0 为执行器(Executor)处理引入了一个新的抽象层。Executor是Java 5的名词,用来表示...Spring的抽象层帮助你把线程池引入到Java 1.3和1.4环境中,同时隐藏了 1.3, 1.4, 5, 和 Java EE环境中线程池实现的差异。

    Spring 2.0 开发参考手册

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...

    java 中Spring task定时任务的深入理解

    这就意味着spring容许你使用其他的定时任务框架,当然spring自身也提供了一种定时任务的实现:spring task。spring task支持线程池,可以高效处理许多不同的定时任务。同时,spring还支持使用Java自带的Timer定时器...

    Spring中文帮助文档

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring API

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    spring chm文档

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring任务执行和调度

    Spring框架分别使用TaskExecutor和TaskScheduler接口提供异步执行和任务调度的抽象。Spring还提供了这些接口的实现,这些接口支持线程池或将其委托给应用服务器环境中的CommonJ。 Spring2.0开始引入的新的抽像。...

    阿里云java短信验证码源码-springbootDubbo:这个库是用来做web分布式架构的用例

    阿里云java短信验证码源码 ...ctoedu-ThreadPool-TaskExecutor 线程池异步阻塞调用 ctoedu-redis redis 线程池 管道 ctoedu-rabitmq rabitmq 使用 elasticsearch-analysis-ik-5.2.0 ik分词器支持乐加载

    java乐器源码-learndemo::fire:javapythongoitem(demo)

    java乐器源码 roncoo-pay-dubbo ...ctoedu-ThreadPool-TaskExecutor 线程池异步阻塞调用 ctoedu-redis redis 线程池 管道 ctoedu-rabitmq rabitmq 使用 elasticsearch-analysis-ik-5.2.0 ik分词器支持乐加载 p3test

    zxing.java源码解析-allKinds:所有种类

    zxing.java源码解析 roncoo-pay-dubbo ...ctoedu-ThreadPool-TaskExecutor 线程池异步阻塞调用 ctoedu-redis redis 线程池 管道 ctoedu-rabitmq rabitmq 使用 elasticsearch-analysis-ik-5.2.0 ik分词器支持乐加载

Global site tag (gtag.js) - Google Analytics