springboot 中开启线程

该博客探讨了在SpringBoot接口中遇到请求响应慢的问题,特别是当接口需要执行耗时的图片生成任务时。为了解决这个问题,博主建议在接口中开启线程,将耗时任务异步处理,以确保主业务的快速响应。文章简要介绍了线程实体类的创建、线程方法和线程类的编写,以及如何在主接口中调用这些线程方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:在使用sprintboot 编写接口时,由于接口本身请求很慢,加上需要在接口中穿插生成图片功能,导致接口更慢,此时,就要考虑在接口中嵌入线程,从而不影响主业务速度。

代码:

线程实体类:将你需要使用到的service,还有参数全部写进线程实体类中
/**
 *
 * @Description:生成婚姻图片线程实体类
 * @Author:ay
 * @Date:2020/9/17
 */
@Data
public class HunYinThreadBO {
 
   BdcClfdjService bdcClfdjService;
   CreatePictureService createPictureService;
   private String pmid;
   private String ywlx;
}
编写线程方法
  private void createHunyinPic(String ywlx,String pmid) {
      
        //存放service
        if(ywlx.equals(DLDLType.GRCLZZZYDJ)){
            hunYinThreadBO.setBdcClfdjService(bdcClfdjService);
            hunYinThreadBO.setCreatePictureService(createPictureService);
        }
        hunYinThreadBO.setPmid(pmid);
        hunYinThreadBO.setYwlx(ywlx);
        HunYinThread hunYinThread = new HunYinThread(hunYinThreadBO);
        hunYinThread.start();
    }
编写线程类


/**
 * @Description:生成婚姻图片线程
 * @Author:ay
 * @Date:2020/9/17
 */
public class HunYinThread  extends Thread{
    HunYinThreadBO hunYinThreadBO;
    public HunYinThread(HunYinThreadBO hunYinThreadBO){
        super();
        this.hunYinThreadBO = hunYinThreadBO;
    }
    @SneakyThrows
    @Override
    public void run() {
        super.run();
        String name = "";
        String sfz = "";
        if(hunYinThreadBO.getYwlx().equals(DLDLType.GRCLZZZYDJ)){
            QueryWrapper<BdcClfdj> bdcJjmbgQueryWrapper = new QueryWrapper<>();
            bdcJjmbgQueryWrapper.lambda().eq(BdcClfdj::getPmid,hunYinThreadBO.getPmid());
            name =hunYinThreadBO.getBdcClfdjService().getOne(bdcJjmbgQueryWrapper).getQlr();
            sfz = hunYinThreadBO.getBdcClfdjService().getOne(bdcJjmbgQueryWrapper).getQlrzjhm();
        }

        String picName = hunYinThreadBO.getYwlx()+ DLDLType.HYXXTP;
        hunYinThreadBO.getCreatePictureService().CreateHunyinPicture(name,sfz,"",1,picName,hunYinThreadBO.getPmid(),hunYinThreadBO.getYwlx());
    }

}

最后,在主接口中调用线程方法即可

此博客主要记录实现方法,代码不全,同志们了解原理,参考下即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值