Callable和Future
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值。
使用实现Callable接口,实现多线程加法求和
/**
* @ClassName: CallableAndFuture.java
* @Description:
* @author yangcb
* @date 2016年11月17日 下午2:11:01
*/
public class CallableAndFuture {
public static void main(String[] args) throws InterruptedException, ExecutionException {
int num=0;
for(int i=1;i<=10;i++){
MyCallable myCallable=new MyCallable(i);
FutureTask<Integer> futureTask=new FutureTask<Integer>(myCallable);
new Thread(futureTask).start();
num=num+futureTask.get();
}
System.out.println(num);
}
}
/***
* 实现callable接口
* @author yangcb
*
*/
class MyCallable implements Callable{
int i;
public MyCallable(int i) {
this.i=i;
}
@Override
public Object call() throws Exception {
int j=0;
/**
* 从1加到100算法,单个线程求和
*/
for(int num=(i-1)*10+1;num<=i*10;num++){
j=j+num;
}
return j;
}
}
浙公网安备 33010602011771号