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;
	}
}
原文地址:https://www.cnblogs.com/yangcb/p/6073840.html