spring4+ThreadPoolTaskExecutor创建线程 两种方式发送邮件
来源:互联网 发布:淘宝密码忘了怎么办 编辑:程序博客网 时间:2024/05/19 20:22
百度云代码下载地址包含测试用例 :点击后跳转
ThreadService
package com.konglingfu.service;public interface ThreadService extends Runnable{ public void setParam(String emailName,String context);}
ThreadServiceImpl
package com.konglingfu.service.impl;import com.konglingfu.service.ThreadService;public class ThreadServiceImpl implements ThreadService{ private String emailName; private String context; public String getContext() { return context; } public void setContext(String context) { this.context = context; } public String getEmailName() { return emailName; } public void setEmailName(String emailName) { this.emailName = emailName; } @Override public void run() { System.out.println("发送邮件emailName:"+emailName +"context:"+context ); } /** * 设置参数 */ @Override public void setParam(String emailName, String context) { this.emailName = emailName; this.context = context; }}
ThreadUtil
package com.konglingfu.util;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;/** * 多线程工具类 */public class ThreadUtil { private static ThreadPoolTaskExecutor poolTaskExecutor; static { init(); } private ThreadUtil() {// 不允许实例化工具类 } private static void init() { poolTaskExecutor = new ThreadPoolTaskExecutor(); // 线程池所使用的缓冲队列 poolTaskExecutor.setQueueCapacity(200); // 线程池维护线程的最少数量(核心线程数) poolTaskExecutor.setCorePoolSize(5); // 线程池维护线程的最大数量 poolTaskExecutor.setMaxPoolSize(100); // 线程池维护线程所允许的空闲时间 poolTaskExecutor.setKeepAliveSeconds(30000); poolTaskExecutor.initialize(); } /** * 执行线程 * * @param runnable */ public static void execute(Runnable runnable) { if (poolTaskExecutor == null) { init(); } poolTaskExecutor.execute(runnable); }}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <bean id="threadService" class="com.konglingfu.service.impl.ThreadServiceImpl" > </bean></beans>
applicationContext2.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"><!-- 线程池维护线程的最少数量 --> <property name="corePoolSize" value="3" /><!-- 线程池维护线程所允许的空闲时间 --> <property name="keepAliveSeconds" value="200" /><!-- 线程池维护线程的最大数量 --> <property name="maxPoolSize" value="5" /><!-- 线程池所使用的缓冲队列 --> <property name="queueCapacity" value="25" /> </bean> <bean id="threadService" class="com.konglingfu.service.impl.ThreadServiceImpl" > </bean></beans>
ThreadTest
import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.konglingfu.service.ThreadService;import com.konglingfu.util.ThreadUtil;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class ThreadTest extends AbstractJUnit4SpringContextTests { @Autowired private ThreadService threadService; @Test public void testThreadTool(){ threadService.setParam("593036108@qq.com", "邮件内容"); ThreadUtil.execute(threadService); }}
ThreadTest2
import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.konglingfu.service.ThreadService;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext2.xml")public class ThreadTest2 extends AbstractJUnit4SpringContextTests { @Autowired private ThreadService threadService; @Autowired private ThreadPoolTaskExecutor taskExecutor; @Test public void testThreadTool(){ threadService.setParam("593036108@qq.com", "邮件内容"); taskExecutor.execute(threadService); }}
运行结果
发送邮件emailName:593036108@qq.comcontext:邮件内容
0 0
- spring4+ThreadPoolTaskExecutor创建线程 两种方式发送邮件
- ios-发送邮件两种方式实现
- ABAP 发送邮件的两种方式
- ThreadPoolTaskExecutor 创建线程池管理
- ThreadPoolTaskExecutor 创建线程池管理
- Spring多线程批量发送邮件(ThreadPoolTaskExecutor)
- SharePoint 2010 中用代码发送邮件的两种方式
- IOS中发送邮件的两种方式
- php邮件发送的两种方式 smtp
- 创建线程两种方式的比较
- java 创建线程 的两种方式
- 创建线程两种方式的比较
- 【多线程】两种方式创建线程
- 创建线程的两种方式
- 创建线程的两种方式
- 多线程 创建线程的两种方式
- 创建线程的两种方式
- Java线程创建的两种方式
- MATLAB读写Excel
- Lesson 6 SDL扩展库的使用和加载其他格式的图片
- 堪称「神器」的电脑软件
- 解决树莓派没有/dev/video0
- M4
- spring4+ThreadPoolTaskExecutor创建线程 两种方式发送邮件
- 在textField输入完内容,让键盘隐藏的方法
- 调试JDK源码
- Android Studio debug 时使用 release 签名
- sublime 3 常用快捷键
- 安卓学习过程、怎样阅读 Android 系统源码
- Java——JDOM解析XML文件
- String类的常用方法
- unity ulua之lua调用c#