package com.atguigu.communication;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
- @auther Elding_xrl
- @create 2020-06-03-17:34
- 创建线程的方式三:实现Callable接口 —> JDK 5.0新增
*/
//1、创建一个实现Callable接口的类,并重写Call()方法;
class NumberThread implements Callable{
int sum = 0;
@Override
public Object call() throws Exception {
for (int i = 0; i <= 100; i++) {
System.out.println(i);
sum += i;
}
return sum;
}
}
public class ThreadNew {
public static void main(String[] args) {
//2、创建一个Callable接口实现类的对象;
NumberThread nt = new NumberThread();
//3、将该对象做为参数传递到FutureTask的构造方法中,创建一个FutureTask对象;
FutureTask ft = new FutureTask(nt);
//4、并将FutureTask对象做为参数传到Thread的构造方法中,创建一个Thread的对象,并调用start()方法;
new Thread(ft).start();
Object object = null;
try {
object = ft.get();
System.out.println("总和为:"+object);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}