自定义线程管理器开启异步任务

自定义线程管理器开启异步任务


**第一步:编写一个类获得bean的类**
//可以让不在容器中的类获得容器中的类
@Component
public class SpringContainerUtils implements ApplicationContextAware {
    private static  ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext1) throws BeansException {
        applicationContext=applicationContext1;
    }

    public static <T> T getBean(Class<T> tClass){
        return applicationContext.getBean(tClass);
    }
}

第二步:编写异步任务管理器

//只需要全局操控一个线程池,所以需要使用单例模式
public class AsyncManager {
    private ThreadPoolTaskExecutor poolTaskExecutor;

    private static AsyncManager asyncManager;

//    私有化构造方法
    private AsyncManager(){
        poolTaskExecutor=SpringContainerUtils.getBean(ThreadPoolTaskExecutor.class);
    }
//获得实例,如果存在直接返回,不存在就实例化
    public static AsyncManager getInstance(){
        if (asyncManager==null){
            asyncManager=new AsyncManager();
        }
        return asyncManager;
    }
//    调用线程池做异步任务
    public void executeByAsync(Runnable runnable){
        poolTaskExecutor.execute(runnable);
    }

}

第三步:编写Runnable工厂

public class RunnableFactory {

    public static Runnable getRunnable(){
        BrandMapper bean = SpringContainerUtils.getBean(xxx.class);
        Runnable runnable = ()->{
        //需要做异步操作的代码
            xxx.doSomethin();
        };
        return runnable;
    }
}

第四步:调用方法开启异步任务

    public void doSomethin(){
   		//在需要使用异步操作的地方调用方法即可
        AsyncManager.getInstance().executeByAsync(RunnableFactory.getRunnable());
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,实现异步线程可以通过使用`@Async`注解来实现。首先,你需要创建一个异步线程类,并在类上加上`@Component`注解,标识为一个组件类。在该类的方法上加上`@Async`注解,表示该方法是异步执行的。 在启动类上添加`@EnableAsync`注解,开启异步任务的支持。 接下来,你可以通过默认的线程池来执行异步任务。在需要异步执行的方法上添加`@Async`注解,就可以实现异步调用了。 如果你想自定义线程池,有几种方式可以实现。一种是通过在`application.yml`配置文件中设置线程池的参数,另一种是实现`AsyncConfigurer`接口或继承`AsyncConfigurerSupport`类来自定义线程池,还可以直接在配置类中配置自定义的`TaskExecutor`。 总之,使用Spring Boot实现异步线程可以提高程序的并发处理能力和性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot实现异步线程](https://blog.csdn.net/hyj_king/article/details/103455143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot @Async异步线程](https://blog.csdn.net/lemon_TT/article/details/122905103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值