执行器:用于启动并控制线程的执行!核心接口为Executor,ExecutorService
一、Callable 与 Future执行器
Callable<V>:表示具有返回值的线程
V:表示返回值类型
call() : 执行任务
Future<V>: 表示Callable 的返回值
V:表示返回值类型
get() : 获取返回值
以下代码演示该执行器:
package com.executor.src;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Edemo {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 创建一个有两个线程的线程池
ExecutorService es = Executors.newFixedThreadPool(2);
// 创建两个任务提交给callable
Future<Integer> r1 = es.submit(new EX(1, 100));
Future<Integer> r2 = es.submit(new EX(100, 10000));
System.out.println(r1.get() + " : " + r2.get());
// 关闭执行器
es.shutdown();
}
}
class EX implements Callable<Integer>{
private int begin,end;
public EX(int begin,int end) {
this.begin = begin;
this.end = end;
}
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = begin; i < end; i++) {
sum += i;
}
return sum;
}
}
执行结果:
4950 : 49990050