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}" /> <!-- 新增 -->
- <!-- 线程池对拒绝任务(无线程可用)的处理策略 -->
- <property name="rejectedExecutionHandler">
- <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
- </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;} 具体线程还是有些不懂
时间: 2024-10-17 14:03:10