一:配置文件xml里面配置生成的bean
<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
<property name="keepAliveSeconds" value="300" />
</bean>
这里用到的是springframework里的 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 实例去管理线程池
项目需要导入相关jar包
二:在你需要用到线程池的类里面注入线程池对象
@Autowired
@Qualifier("taskExecutor")
private TaskExecutor taskExecutor;
在service里面可以直接从线程池里面启一个线程执行业务
//5,IOS推送通道
AniuMessage newMsg = new AniuMessage();
newMsg.setMessageChannelType(AniuMessage.MESSAGE_CHANNELTYPE_IOS);
AniuPushMessageListRunnable pushApp = new AniuPushMessageListRunnable(newMsg,aniuMessageService);
taskExecutor.execute(pushApp);
这里 AniuPushMessageListRunnable 就是实际实现 Runnable类然后处理业务逻辑的类
newMsg 是存放各类参数的实例,方便AniuPushMessageListRunnable 去处理相关业务
aniuMessageService 是作service里面注入的操作逻辑service,作为形参传入 AniuPushMessageListRunnable 类,方便AniuPushMessageListRunnable 里面直接使用aniuMessageService去处理相关的业务逻辑
AniuPushMessageListRunnable 线程逻辑处理类写法示例:
/**
* 对指定列表用户推送消息
*
* @author administrator
* @date 2019年4月4日
*/
public class AniuPushMessageListRunnable implements Runnable{
private static final Logger LOGGER = Logger.getLogger(AniuPushMessageListRunnable.class);
private AniuMessageService aniuMessageService;
private AniuMessage aniuMessage;
public AniuPushMessageListRunnable(AniuMessage aniuMessage,AniuMessageService aniuMessageService) {
super();
this.aniuMessageService = aniuMessageService;
this.aniuMessage = aniuMessage;
}
@Override
public void run() {
LOGGER.info("--------------------开始[对指定列表用户推送消息]线程已启动");
if(aniuMessage == null){
LOGGER.info("--------------------推送的消息对象是空");
}else{
//这里是处理相关业务逻辑,可以用传入的aniuMessageService 去处理相关逻辑
//如果需要更多的service,可以拓展此类的构造函数,增加形参,传入多个service
}
LOGGER.info("--------------------结束[对指定列表用户推送消息]线程已启动");
}
}