给我一个java.util.concurrent.Future接口的实现例子
时间: 2024-02-03 14:02:46 浏览: 91
下面是一个简单的使用 `java.util.concurrent.Future` 接口的例子:
```java
import java.util.concurrent.*;
public class FutureExample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<Integer> future = executorService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(5000);
return 42;
}
});
System.out.println("Do something else while waiting for future to complete...");
Integer result = future.get();
System.out.println("Future result: " + result);
executorService.shutdown();
}
}
```
在这个例子中,我们使用 `java.util.concurrent.ExecutorService` 创建了一个单线程池,然后通过 `submit` 方法提交了一个实现了 `java.util.concurrent.Callable` 接口的任务。这个任务会在执行过程中暂停 5 秒钟,然后返回整数 42。
接着,我们可以在任务执行过程中做一些其他的事情,而不必等待任务的完成。这里我们只是简单地输出了一条提示信息。
最后,我们通过 `future.get()` 方法获取了任务的执行结果,并将结果打印出来。如果任务还没有完成,调用 `get()` 方法的线程会被阻塞,直到任务完成并返回结果。
需要注意的是,如果在调用 `get()` 方法时任务还没有完成,那么调用线程会一直处于阻塞状态,直到任务完成。这可能会导致程序出现死锁等问题,因此在使用 `Future` 接口时需要谨慎处理。
阅读全文