package thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @auto dh
* @create 2020-03-28-23:03
*/
//1、实现Callable接口
class Th008 implements Callable<Integer> {
private Integer sum = 0;
// 2、此线程需要操作的声明在call方法中
@Override
public Integer call() throws Exception {
for (int i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
}
public class Thread008 {
public static void main(String[] args) {
// 3、创建Callable接口实现类的对象
Th008 ts = new Th008();
// 4、将callable接口实现类的对象作为参数传入到FutureTask构造器中。
// FutureTask实现了runnable、Future接口
FutureTask<Integer> futureTask = new FutureTask<>(ts);
//5、将FutureTask实例对象作为参数传入创建的Thread构造器中
new Thread(futureTask).start();
try {
// 获取callable中call方法的返回值
Integer sum= futureTask.get();
System.out.println("总和为"+sum);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}