自定义线程的使用

自定义多线程

@Configuration
@EnableAsync //开启多线程
public class ThreadPoolConfig {
    @Bean("taskExecutor")
    public Executor asyncThreadExecutor(){
        ThreadPoolTaskExecutor executor=new ThreadPoolTaskExecutor();
        //设置核心线程数
        executor.setCorePoolSize(5);

        //设置最大线程数
        executor.setMaxPoolSize(20);

        //设置线程活跃时间(秒)
        executor.setKeepAliveSeconds(60);

        //设置默认线程名称
        executor.setThreadNamePrefix("FYZの个人博客");

        //等待所有任务结束后在关闭线程池
        executor.setWaitForTasksToCompleteOnShutdown(true);

        //执行初始化
        executor.initialize();

        return executor;
    }
}

然后在要使用此线程的上面加上这个@Async("taskExecutor")注解就OK了

例如

@Component
public class ThreadService {
    /**
     * 希望此操作在线程池中执行,不会影响原有的主线程
     * @param articleMapper
     * @param article
     */
    @Async("taskExecutor")
    public void updateArticleViewCount(ArticleMapper articleMapper, Article article) {
        int viewCounts=article.getViewCounts();
        Article articleUpdate=new Article();
        articleUpdate.setViewCounts(viewCounts+1);
        LambdaUpdateWrapper updateWrapper=new LambdaUpdateWrapper();
        updateWrapper.eq(Article::getId,article.getId());
        //设置 一个为了在多线程环境下线程安全
        updateWrapper.eq(Article::getViewCounts,viewCounts);
        articleMapper.update(articleUpdate,updateWrapper);
        try {
            Thread.sleep(5000);
            System.out.println("更新完成");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
}
一起学java 文章被收录于专栏

分享平时学习心得及见解,还有学习笔记

全部评论
测试评论
点赞
送花
回复
分享
发布于 2021-08-13 19:13
测试
点赞
送花
回复
分享
发布于 2021-08-13 19:14
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务