首先编写异步操做类,在异步方法上加入注解 @Async异步
@Component public class MyAsync { @Async public void test1(){ System.out.println("异步方法开始"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("异步方法结束"); } }
而后在启动类中进行注册,加入注解 .net
@EnableAsync
在须要异步操做的地方,注入异步操做类,调用异步方法get
@Autowired private MyAsync myAsync;
public void test5(){ System.out.println("test5方法开始"); myAsync.test1(); System.out.println("test5方法结束"); }
以上是异步操做无返回值的状况,下面介绍下若是异步操做有返回值的状况io
@Async public Future<String> test2(){ System.out.println("异步方法开始"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("异步方法结束"); return new AsyncResult<String>("异步方法返回结果"); }
public void test5(){ System.out.println("test5方法开始"); Future<String> future= myAsync.test2(); while (true){ if(future.isDone()){ try { System.out.println(future.get()); } catch (Exception e) { e.printStackTrace(); } break; } } System.out.println("test5方法结束"); }
当异步操做结束后, future.isDone( ) 返回 true ,则会把异步操做返回信息打印 class