首先編寫異步操做類,在異步方法上加入註解 @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