java实现调用同类的异步方法
时间: 2023-10-03 18:05:58 浏览: 92
可以使用Java中的线程池和Future来实现调用同类的异步方法。
首先,创建一个线程池,可以使用Java自带的ThreadPoolExecutor类。然后,定义一个异步方法,使用Java8中的CompletableFuture来异步执行该方法,并返回一个Future对象。在方法中,将需要异步执行的代码放在CompletableFuture.supplyAsync()方法中。
接着,在同类中调用该异步方法时,可以使用Future的get()方法来获取异步方法的执行结果。如果异步方法还未执行完毕,则get()方法会阻塞等待,直到异步方法执行完毕并返回结果。
下面是示例代码:
```
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class MyClass {
private ExecutorService executor = Executors.newFixedThreadPool(2);
public Future<String> asyncMethod() {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的代码
return "异步方法执行结果";
}, executor);
return future;
}
public void callerMethod() {
Future<String> future = asyncMethod();
try {
String result = future.get();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,asyncMethod()方法是异步执行的方法,callerMethod()方法是调用异步方法的方法。在异步方法中,使用CompletableFuture.supplyAsync()方法来异步执行代码,并返回一个Future对象。在调用异步方法的方法中,通过Future的get()方法来获取异步方法的执行结果。
阅读全文