自定义线程的使用

自定义多线程

@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:14
测试评论
点赞 回复 分享
发布于 2021-08-13 19:13

相关推荐

程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务