在Java中,异步接口可以通过回调函数、Future和CompletionStage等方式返回结果。
- 回调函数:定义一个接口,其中包含一个回调方法,异步操作完成后,通过回调函数来处理结果。例如:
public interface AsyncCallback{ void onComplete(T result); void onError(Exception e); } public interface AsyncService { void doAsyncOperation(AsyncCallback callback); } // 使用异步接口 AsyncService service = new AsyncServiceImpl(); service.doAsyncOperation(new AsyncCallback () { @Override public void onComplete(String result) { // 处理异步操作的结果 } @Override public void onError(Exception e) { // 处理异常情况 } });
- Future:Future是Java提供的一个用于表示异步操作结果的类,它可以用来检查异步操作是否已完成,并获取最终结果。例如:
public interface AsyncService { FuturedoAsyncOperation(); } // 使用异步接口 AsyncService service = new AsyncServiceImpl(); Future future = service.doAsyncOperation(); // 处理其他任务 String result = future.get(); // 阻塞等待异步操作完成并获取结果
- CompletionStage:CompletionStage是Java 8中新增的用于处理异步操作的接口,它提供了丰富的方法可以链式地处理异步操作的结果。例如:
public interface AsyncService { CompletionStagedoAsyncOperation(); } // 使用异步接口 AsyncService service = new AsyncServiceImpl(); CompletionStage stage = service.doAsyncOperation(); stage.thenAccept(result -> { // 处理异步操作的结果 }).exceptionally(e -> { // 处理异常情况 return null; // 返回一个默认值 });
以上是几种常见的Java异步接口返回结果的方式,具体选择哪种方式取决于具体的业务需求和开发习惯。