在springboot中使用@Async方便地開啟一個(gè)線程
1.編寫一個(gè)方法,在方法寫新線程的業(yè)務(wù)代碼多糠,然后在方法上面加上@Async,表示新開一個(gè)線程執(zhí)行這個(gè)方法
@Async
public void sayHello() throws Exception{
//線程休眠一下
Thread.sleep(1000);
System.out.println("我是異步執(zhí)行代碼");
}
2.在啟動(dòng)類上添加聲明使用異步操作的注解@EnableAsync
@SpringBootApplication
@EnableAsync
public class TestPdfToHtmlApplication {
public static void main(String[] args) {
SpringApplication.run(TestPdfToHtmlApplication.class, args);
}
}
完整測(cè)試類如下:
異步線程類:
@Component
public class SynTask {
@Async
public void sayHello() throws Exception{
//線程休眠一下
Thread.sleep(1000);
System.out.println("我是異步執(zhí)行代碼");
}
}
測(cè)試類:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestPdfToHtmlApplication .class)
public class TestTask {
@Resource
private SynTask synTask;
@Test
public void test() throws Exception{
System.out.println("我在異步前面");
synTask.sayHello();
System.out.println("我在異步后面");
Thread.sleep(1000);
}
}
啟動(dòng)類配置:
@SpringBootApplication
@EnableAsync
public class TestPdfToHtmlApplication {
public static void main(String[] args) {
SpringApplication.run(TestPdfToHtmlApplication.class, args);
}
}
tips:
1.異步的方法跟調(diào)用異步的方法不能在同一個(gè)類中,否則注解不生效呆抑,還是同步的
2.單元測(cè)試的時(shí)候要注意
image.png