前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【thread】优雅的使用线程池

【thread】优雅的使用线程池

原创
作者头像
无敌小菜鸟
发布2022-06-11 09:46:47
4680
发布2022-06-11 09:46:47
举报
文章被收录于专栏:搬砖笔记搬砖笔记

最近在优化项目的多线程的使用方法,以前都是显示的使用线程启动,造成启动的线程多了,比较占用系统的资源,随即着手优化了下项目的线程使用方法。

一、老式方法

都是显式的调用,并且阿里巴巴开发手册并不推荐这样使用。

代码语言:javascript
复制
        //新建线程并执行任务类
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName() + ":异步任务");
        }).start();

二、优化方法

创建线程池配置

代码语言:javascript
复制
@Configuration
public class AsyncConfig {

    private static final int MAX_POOL_SIZE = 50;

    private static final int CORE_POOL_SIZE = 20;

    @Bean("asyncTaskExecutor")
    public AsyncTaskExecutor asyncTaskExecutor() {
        ThreadPoolTaskExecutor asyncTaskExecutor = new ThreadPoolTaskExecutor();
        asyncTaskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
        asyncTaskExecutor.setCorePoolSize(CORE_POOL_SIZE);
        asyncTaskExecutor.setThreadNamePrefix("async--pool-");
        asyncTaskExecutor.initialize();
        return asyncTaskExecutor;
    }
}

启用异步支持

启动类上添加@EnableAsync注解

代码语言:javascript
复制
@SpringBootApplication
@EnableAsync
public class SpringbootAsyncApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootAsyncApplication.class, args);
    }

}

在其它类中使用线程池

先注入线程池类,再使用线程类的submit方法即可

代码语言:javascript
复制
@Autowired
private AsyncTaskExecutor asyncTaskExecutor;


@GetMapping("/")
public String test() {
    // 使用异步线程池 线程
    asyncTaskExecutor.submit(() -> {
        log.info(Thread.currentThread().getName() + "asyncTaskExecutor");
    });
    return "ok";
}

这样我们就使用上了线程池的配置,也不用显式的去使用线程池了。

thread
thread

线程池生效啦,暂时先写到这里。

参考资料

https://huanzi-qch.gitee.io/spring-boot/#/docs/%E3%80%8ASpringBoot

总结

腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、老式方法
  • 二、优化方法
  • 参考资料
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档