Spring 使用线程池demo示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sgl520lxl/article/details/89361357

一:配置文件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("--------------------结束[对指定列表用户推送消息]线程已启动");
	}
}

猜你喜欢

转载自blog.csdn.net/sgl520lxl/article/details/89361357