帮我用java用future写个demo
时间: 2024-02-11 14:04:22 浏览: 85
一个javademo
好的,以下是Java实现的示例代码:
```java
import java.util.concurrent.*;
public class FutureDemo {
public static void main(String[] args) throws Exception {
// 创建一个线程池
ExecutorService executor = Executors.newFixedThreadPool(3);
// 提交三个任务到线程池中,并返回Future对象
Future<Integer> future1 = executor.submit(() -> {
System.out.println("Starting calculation 1...");
Thread.sleep(2000);
System.out.println("Calculation 1 done.");
return 1 * 2;
});
Future<Integer> future2 = executor.submit(() -> {
System.out.println("Starting calculation 2...");
Thread.sleep(2000);
System.out.println("Calculation 2 done.");
return 2 * 2;
});
Future<Integer> future3 = executor.submit(() -> {
System.out.println("Starting calculation 3...");
Thread.sleep(2000);
System.out.println("Calculation 3 done.");
return 3 * 2;
});
// 等待所有任务完成
CompletableFuture.allOf(future1, future2, future3).join();
// 获取任务的结果
int result1 = future1.get();
int result2 = future2.get();
int result3 = future3.get();
// 输出结果
System.out.println("Result 1: " + result1);
System.out.println("Result 2: " + result2);
System.out.println("Result 3: " + result3);
// 关闭线程池
executor.shutdown();
}
}
```
在这个示例中,我们使用`ExecutorService`创建一个线程池,并使用`submit()`方法提交三个任务到线程池中。`submit()`方法会返回一个`Future`对象,可以使用它来检查任务的状态或获取任务的结果。我们使用`CompletableFuture.allOf()`方法等待所有任务完成,然后使用`get()`方法获取任务的结果并输出。由于线程池中有三个线程,因此这三个任务会并行执行,提高了计算效率。最后,我们使用`shutdown()`方法关闭线程池。
阅读全文