SpringBoot 最简单的使用异步线程案例 @Async

public interface AsyncTestService {

/**

  • 这里将会在impl里标注为异步任务,在执行此方法的时候,会单独开启线程来执行

*/

void function1() throws InterruptedException;

void function2();

}

AsyncTestServiceImpl:

package com.async.service.impl;

import com.async.service.AsyncTestService;

import org.springframework.scheduling.annotation.Async;

import org.springframework.stereotype.Service;

import java.util.UUID;

@Service

public class AsyncTestServiceImpl implements AsyncTestService {

/**

  • 这里进行标注为异步任务,在执行此方法的时候,会单独开启线程来执行

*/

@Async(“getExecutor”)

public void function1() throws InterruptedException {

System.out.println("f1 : " + Thread.currentThread().getName() + " " + UUID.randomUUID().toString());

// try {

// Thread.sleep(10000);

// System.out.println(“EEEE”);

// } catch (InterruptedException e) {

// e.printStackTrace();

// }

//故意等10秒,那么异步线程开起来,这样明显看到 2方法不用等1方法执行完再调用了

Thread.sleep(10000);

System.out.println(“EEEE”);

}

@Async(“getExecutor”)

public void function2() {

System.out.println("f2 : " + Thread.currentThread().getName() + " " + UUID.randomUUID().toString());

try {

Thread.sleep(100);

System.out.println(“aaaa”);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

代码不走读了,但是必须得提下注解:

@Async 这个是告诉全世界,这里! 只要被调用,就是会开启一个异步线程。

至于后面加上(“getExecutor”),是为了指定读取自己写的配置信息例如线程名称那些。

最后是TestController:

package com.async.test;

import com.async.service.AsyncTestService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class TestController {

@Autowired

AsyncTestService asyncTestService;

@GetMapping(“/test”)

public void test() throws InterruptedException {

// for (int i = 0; i < 10; i++) {

// asyncTestService.function1(); // 执行异步任务

// asyncTestService.function2();

// }

asyncTestService.function1(); // 执行异步任务

asyncTestService.function2();

}

}

启动类没啥改变:

package com.async;

import org.springfr 需要zi料+ 绿色徽【vip1024b】

amework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class AsyncApplication {

总结

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了

《Java中高级核心知识全面解析》

小米商场项目实战,别再担心面试没有实战项目:

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了

《Java中高级核心知识全面解析》

[外链图片转存中…(img-rDlYFk4O-1710368919804)]

小米商场项目实战,别再担心面试没有实战项目:

[外链图片转存中…(img-hPessp4Q-1710368919805)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值