Spring线程池使用方法

基础的new Thread存在以下几种弊端:

  • new Thread新建对象性能差
  • 线程缺乏统一管理,如无限新建线程、线程相互竞争等
  • 对线程控制性弱,如线程中断、线程定时执行等

相比new Thread,线程池有以下几种优点:

  • 可重用存在的线程,减少线程创建消亡开销
  • 可控制线程最大并发数
  • 提供方便的线程中断、线程定时执行等功能

本文介绍Spring线程池的简单使用

1:在Spring的配置文件(如spring.xml)中增加线程配置

1
2
3
4
5
6
<bean id ="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5"/>
<property name="maxPoolSize" value="50"/>
<property name="queueCapacity" value="200"/>
<property name="waitForTasksToCompleteOnShutdown" value="true"/>
</bean>

2:使用类中增加bean注入

1
2
@Resource
private ThreadPoolTaskExecutor threadPoolTaskExecutor;

3:根据场景使用线程池

1
2
3
4
5
6
7
8
9
10
11
threadPoolTaskExecutor.execute(new Runnable(){
public void run(){
try {
Tools.sendEmail(user, EmailRequestType.SEND_REGISTER);
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});

热评文章