异步注解开启:
@EnableAsync
@SpringBootApplication
@EnableAsync
public class XXXApplication {
public static void main(String[] args) {
SpringApplication.run(XXXApplication.class, args);
}
}
方式1、额外定义异步服务,在方法上增加@Async 注解
方式2、在当前服务中的某方法上增加@Async 注解
@Service
@Slf4j
public class XXXService {
public void getXX(){
//打印当前线程名称和ID
log.info("ThreadName:{},ThreadId:{}",Thread.currentThread().getName(),Thread.currentThread().getId());
//异步调用
XXXService serviceX = SpringContextHolder.getBean(XXXService.class);
serviceX.getAsyncXXAttr();
}
/**
* 异步获取其他属性
*/
@Async
public void getAsyncXXAttr(){
//打印当前线程名称和ID
log.info("ThreadName:{},ThreadId:{}",Thread.currentThread().getName(),Thread.currentThread().getId());
}
}
单元测试:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = XXXXApplication.class)
public class XXXXXXXXTest {
@Resource
private XXXService xxxService;
@Test
public void test7(){
xxxService.getXX();
}
}
日志打印:
2023-02-28 16:01:28,060 - ThreadName:main,ThreadId:1
2023-02-28 16:01:28,076 - ThreadName:user-rpt-1,ThreadId:54