java语言中 Callable使用例子
时间: 2024-02-24 13:55:14 浏览: 68
下面是一个使用 `Callable` 的 Java 例子:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class CallableExample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executor = Executors.newFixedThreadPool(3);
List<Future<Integer>> futures = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
Callable<Integer> task = new Task(i);
Future<Integer> future = executor.submit(task);
futures.add(future);
}
for (Future<Integer> future : futures) {
int result = future.get();
System.out.println("Task " + result + " completed.");
}
executor.shutdown();
}
static class Task implements Callable<Integer> {
private final int num;
Task(int num) {
this.num = num;
}
@Override
public Integer call() throws Exception {
System.out.println("Processing task " + num + "...");
Thread.sleep(1000); // 模拟耗时操作
System.out.println("Task " + num + " completed!");
return num;
}
}
}
```
在这个例子中,我们定义了一个 `Task` 类实现了 `Callable<Integer>` 接口,其中 `call()` 方法返回一个 `Integer` 类型的结果,并模拟了一个耗时操作。我们使用 `ExecutorService` 创建一个大小为 3 的线程池,然后使用 `executor.submit()` 提交任务,每个任务都是一个 `Callable` 对象。我们使用 `Future` 对象来获取任务的结果,并打印它们的结果。最后,我们关闭线程池。
阅读全文