缘由
记录日志录入数据库时,脱离主线程,实现异步插入,这样不会拖延主线程的执行时间
ps:记录日志,可以写在业务逻辑中,也可以利用aop自动记录。
... service{
public void login(){
// 登录逻辑
......
// 记录日志插入数据库
// 这个记录过程是要占用当前线程时间的
// 通过异步线程执行,可以摆脱这种时间的消耗
logService.loginInfo(userInfo);
}
}
步骤
1.配置线程池
2.自定义一个异步任务管理器
3.自定义任务
4.指定地点处,调用执行任务管理器,传入指定的任务
/**
* 配置线程池
* /
@Configuration
public class ThreadPoolConfig
{
// 核心线程池大小
private int corePoolSize = 50;
/**
* 创建线程池
* 它继承了ThreadPoolExecutor,也就是说它也是个线程池
* 调用它,他会去线程池中拿取一个线程来执行你装入的自定义任务
* schedule使它能够提供一些周期任务和延迟任务相关的操作 *
* 相关文档
* https://blog.csdn.net/nuannuanwfm/article/details/90573943
*/
@Bean(name = "scheduledExecutorService")
protected ScheduledExecutorService scheduledExecutorService()
{