给出java使用FutureTask异步处理的代码示例
时间: 2024-03-12 07:47:58 浏览: 68
下面是一个Java使用FutureTask异步处理的示例代码:
```java
import java.util.concurrent.*;
public class FutureTaskExample {
public static void main(String[] args) throws Exception {
// 创建一个 FutureTask,使用 Callable 实现异步处理
FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
@Override
public String call() throws Exception {
// 模拟异步处理
Thread.sleep(1000);
return "Hello, FutureTask!";
}
});
// 创建一个线程池,使用 execute 方法执行 FutureTask
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(futureTask);
// 在主线程中执行其他操作
System.out.println("Do something else while waiting for FutureTask...");
// 阻塞等待 FutureTask 的结果,并打印结果
String result = futureTask.get();
System.out.println(result);
// 关闭线程池
executor.shutdown();
}
}
```
在这个示例中,我们创建了一个 FutureTask 对象,使用 Callable 接口实现异步处理。然后,我们通过 ExecutorService 创建了一个线程池,并使用 execute 方法执行 FutureTask。在主线程中,我们可以执行其他操作,然后通过调用 FutureTask 的 get 方法来阻塞等待异步处理的结果。最后,我们关闭了线程池。
阅读全文