ThreadPoolTaskExecutor提高服务器响应速度
2015-12-27 16:34
357 查看
Spring配置文件
<!-- 任务执行器 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心线程数 -->
<property name="corePoolSize" value="10" />
<!-- 最大线程数 -->
<property name="maxPoolSize" value="50" />
<!-- 队列最大长度 >=mainExecutor.maxSize -->
<property name="queueCapacity" value="1000" />
<!-- 线程池维护线程所允许的空闲时间,默认为60s -->
<property name="keepAliveSeconds" value="300" />
<!-- 线程池对拒绝任务(无线程可用)的处理策略 -->
<property name="rejectedExecutionHandler">
<bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/>
</property>
</bean>
调用线程池
public static void startSendMsg(final long id, final String title, final String content, final int type) {
log.info("1-start sending startSendMsg");
ThreadPoolTaskExecutor taskExecutor = (ThreadPoolTaskExecutor) SpringUtil.getBean("taskExecutor");
taskExecutor.execute(new Runnable() {
public void run() {
log.info("2-taskExecutor.execute run start.");
try {
sendMsg(id, title, content, type);
} catch (Exception e) {
log.error("失败", e);
}
log.info("8-taskExecutor.execute run end.");
}
});
}
这个类似数据库连接池,减少创建线程,销毁线程时的开销,提高响应速度。
<!-- 任务执行器 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心线程数 -->
<property name="corePoolSize" value="10" />
<!-- 最大线程数 -->
<property name="maxPoolSize" value="50" />
<!-- 队列最大长度 >=mainExecutor.maxSize -->
<property name="queueCapacity" value="1000" />
<!-- 线程池维护线程所允许的空闲时间,默认为60s -->
<property name="keepAliveSeconds" value="300" />
<!-- 线程池对拒绝任务(无线程可用)的处理策略 -->
<property name="rejectedExecutionHandler">
<bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/>
</property>
</bean>
调用线程池
public static void startSendMsg(final long id, final String title, final String content, final int type) {
log.info("1-start sending startSendMsg");
ThreadPoolTaskExecutor taskExecutor = (ThreadPoolTaskExecutor) SpringUtil.getBean("taskExecutor");
taskExecutor.execute(new Runnable() {
public void run() {
log.info("2-taskExecutor.execute run start.");
try {
sendMsg(id, title, content, type);
} catch (Exception e) {
log.error("失败", e);
}
log.info("8-taskExecutor.execute run end.");
}
});
}
这个类似数据库连接池,减少创建线程,销毁线程时的开销,提高响应速度。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树