创建线程相信大家都很熟悉,常用的就是继承Thread类和实现Runnable接口。
今天学习第三种方法,Callable接口和Future 来创建线程。
Callable类似于Runnable接口,但是Callable功能强于Runnable,它有返回值,线程执行后返回值可以被Futrue拿到。
Callable需要依赖FutrueTask来接收结果,FutureTask是Future接口的实现类。
下面用一个简单的代码来说明实现:
class Demo implements Callable<Integer>{
@Override
//重写call方法
public Integer call() throws Exception {
// TODO Auto-generated method stub
int sum=0;
for(int i=0;i<=100;i++) {
sum+=i;
}
return sum;
}
}
public static void main(String[] args){
Demo demo=new Demo();
//1.执行Callable方式,需要FutureTask实现类的支持,用于接收运算结果
FutureTask<Integer> result = new FutureTask<Integer>(demo);
new Thread(result).start();
//2.接收线程运算后的结果
try {
Integer sum=result.get();//FutureTask可用于闭锁
System.out.println(sum);
} catch (Exception e) {
// TODO: handle exception
}
}
代码来源 https://blog.csdn.net/binggetong/article/details/81604283