用java代码写一个ThreadPoolExecutor线程池执行的callable类的线程的代码示例
时间: 2024-05-14 08:13:08 浏览: 96
好的,以下是用Java编写一个线程池执行Callable类的示例代码:
```
import java.util.concurrent.Callable;
public class MyCallable implements Callable<Integer> {
private int num;
public MyCallable(int num) {
this.num = num;
}
public Integer call() throws Exception {
int sum = 0;
for (int i = 1; i <= num; i++) {
sum += i;
}
return sum;
}
}
```
在这个示例代码中,我们定义了一个名为MyCallable的类,它实现了Java的Callable接口,并使用一个整数类型的构造函数来初始化类中的成员变量num。
在call()方法中,我们使用for循环计算从1到num之间的所有整数的和,并将结果作为整数类型的返回值。
当我们在使用线程池执行此Callable类时,将会返回计算结果。例如:
```
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executorService = Executors.newFixedThreadPool(2);
Future<Integer> result1 = executorService.submit(new MyCallable(5));
Future<Integer> result2 = executorService.submit(new MyCallable(10));
System.out.println("Result1 = " + result1.get());
System.out.println("Result2 = " + result2.get());
executorService.shutdown();
}
}
```
在这个示例代码中,我们首先创建了一个固定大小为2的线程池(可根据实际情况自行调整),然后分别用参数5和10创建了两个MyCallable类的实例,并将它们提交到线程池中执行。
我们还使用Future接口获取了MyCallable类的执行结果,并将结果打印到控制台上。
最后,我们调用线程池的shutdown()方法终止所有线程的执行。
阅读全文