多线程使用建议(最好用线程池)

在作为多线程编程中一般会用线程池去开启一个多线程:(单独开启也可)

 <!-- 定时任务 -->

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

<property name="corePoolSize" value="${task.core_pool_size}" />

<property name="maxPoolSize" value="${task.max_pool_size}" />

<property name="queueCapacity" value="${task.queue_capacity}" />

<property name="keepAliveSeconds" value="${task.keep_alive_seconds}" />

</bean>

要么用executorserivce生成定时任务的线程池

这里要注意既然用了线程池就要保证线程池是全局性的,获取单例方式实现,

这样才有线程池的意义,为了公用,这样的话一般会抽象成一个公用的类(单例)

类中:

@Component

public class SendEmailServiceImpl implements SendEmailService {

@Autowired

private JavaMailSender mailSender;

@Autowired

private TaskExecutor taskExecutor;

/* 使用SpringMail发送邮件 */

@Override

public void sendEmail(String sendFrom, String sendTo, String subject, String htmlMessage) throws MessagingException {

final MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");

helper.setSubject(subject);

helper.setFrom(sendFrom);

helper.setTo(sendTo);

helper.setText(htmlMessage, true);

taskExecutor.execute(new Runnable(){

@Override

public void run() {

try {

SendEmailServiceImpl.this.mailSender.send(message);

} catch (MailException e) {

System.out.println("Error Email send to " );

e.printStackTrace();

}

}

});

}

}

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2379078