ExecutorService——<T> Future<T> submit(Callable<T> task)

提交一个有返回值的任务用于执行,且返回一个Future对象,用来表示行将发生的任务的结果。
如果任务执行成功的话,那么Future对象的get方法将会返回任务的执行结果T。
 
如果你想要立即阻塞,等待任务完成,那么你可以使用以下这种构造形式。
result = exec.submit(aCallable).get();
 
为什么要返回一个Future对象,它有什么用呢?
原因是,有需求,什么需求呢,需求就是任务的提交者,需要知晓任务的执行情况。要对任务有所掌控,不可能把任务丢给你就不管了,起码你得告诉我任务完成没有。
或者我有你的联系方式,可以随时查看任务的完成情况。( Future对象的isDone方法),如果完成了,完成结果又是什么( Future对象的get方法
知晓任务的执行情况又有什么用呢,答案是可以选择性地取消任务。( Future对象的cancel方法
 
注:ExecutorService的submit有多个重载方法,并不一定要Callable参数,也可以是没有返回值的Runable。
 
ExecutorService.java(部分源码)
 

猜你喜欢

转载自www.cnblogs.com/longfurcat/p/9484271.html
T