码迷,mamicode.com
首页 > 其他好文 > 详细

ExecutorService与ThreadPoolTaskExecutor

时间:2016-10-12 10:50:17      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

1.ExecutorService 

private static ExecutorService exec = null;
public static ExecutorService getExecutorServiceInstance(){
if(exec == null){
exec = Executors.newCachedThreadPool();
}
return exec;
}
public void threadNoticeOrMessageOrShortMessage (Integer type, Map<String, String> map, List<String> replaceParameter, List<String> list, Integer saveFlag){
exec = getExecutorServiceInstance();
NoticeOrMessageOrShortMessage noticeOrMessageOrShortMessage = new NoticeOrMessageOrShortMessage(getMessagePushInstance(), type, map, replaceParameter, list, saveFlag,
messagePushService, sendPushService, sendSmsService, sendMessageService);
exec.execute(noticeOrMessageOrShortMessage);
}

2.ThreadPoolTaskExecutor

<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}" />
  <!-- 新增 -->
  1. <!-- 线程池对拒绝任务(无线程可用)的处理策略 -->  
  2.     <property name="rejectedExecutionHandler">  
  3.       <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />  
  4.     </property>  

</bean>

@Resource(name = "taskExecutor")
private TaskExecutor taskExecutor;
private void addSendTask(final MimeMessage mimeMessage) {
try {
taskExecutor.execute(new Runnable() {
public void run() {
javaMailSender.send(mimeMessage);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
另外一种方式(未验证代码准确性)
private static ThreadPoolTaskExecutor threadPoolTaskExecutor = null;
public static ThreadPoolTaskExecutor getThreadPoolTaskExecutor Instance(){
    if(threadPoolTaskExecutor == null){
    threadPoolTaskExecutor.setCorePoolSize(5);
    threadPoolTaskExecutor.setMaxPoolSize(50);
    threadPoolTaskExecutor.setQueueCapacity(1000);
    threadPoolTaskExecutor.setKeepAliveSeconds(60);
    try {
  taskExecutor.execute(new Runnable() {
   public void run() {
  javaMailSender.send(mimeMessage);
  }
  });
  } catch (Exception e) {
e.printStackTrace();
  }
   }
    return exec;
}

具体线程还是有些不懂

ExecutorService与ThreadPoolTaskExecutor

标签:

原文地址:http://www.cnblogs.com/liduanwen/p/5951730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!