实现Callable接口,如下
package practice;
import java.util.concurrent.Callable;
//泛型参数 是 call()方法返回值的类型
public class Runner implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int j = 0;
for (int i = 0; i < 10; i++) {
System.out.println(i);
j += i;
}
return j;
}
}
创建定长线程池,执行任务,如下
package practice;
import java.util.concurrent.*;
/**
* 创建线程池执行任务
*/
public class Test {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(3);
//执行任务,获取返回结果
//也可以执行Runnable接口
Future<Integer> future = executorService.submit(new Runner());
//get()方法从Future中拿到返回结果
int i = future.get();
System.out.println(i);
//关闭线程池,线程池会在执行完所有任务后再关闭
executorService.shutdown();
}
}