springboot初始学习笔记2之@Async

springboot初始学习笔记2之@Async

 

1、@Async 异步执行方法:异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。

在执行@Async 所标注的方法时,会将被注解的方法独立的启动一个线程来执行,主程序无需等待该被@Async 注解的方法的完成。

举例:

1.1 在controller层调用被注解的方法

@Controller

@Slf4j

public class MemberController {

@Autowired

private MemberService member ;

@RequestMapping("/member")

@ResponseBody

public String member(){

log.info("1");

String result = member.memser();

log.info("4");

return result;

}

}

1.2 被@Aaync注解的方法的位置

@Service

@Slf4j

public class MemberService {

// 在运行时单独开启一个线程来执行该方法

@Async

public String memser() {

log.info("2");

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

log.info("3");

return "adeline";

}

}

1.3在程序入口开启异步执行方法

 

@SpringBootApplication

@EnableAsync//开启异步执行方法

public class Application {



public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

 

1.4  程序开启后,在浏览器输入http://localhost:8080/member,会发现程序先输出的执行结果,后台的程序还在执行,在springboot的环境下运行结果为:

 

1.5被@Async注解的方法等价于给该方法单独开启了线程

 

@Service

@Slf4j

public class MemberService {

public String memser() {

// 加@Async注解的作用相当于

new Thread(new Runnable() {

public void run() {

log.info("2");

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

log.info("3");

}

}).start();

return "adeline";

}

}

运行结果为:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值