1、可以接受的任务类型不同
execute() 只能接受 Runnable 类型的任务
submit 不管是 Runnable 还是 Callable 类型的任务都可以接受,但是 Runnable返回值均为 void,所以使用 Future 的 get()获得的还是null
2、 siubmit()有返回值,而 execute()没有
例如,有个 task,希望该 task 执行完后告诉我它的执行结果,是成功还是失败,然后继续下面的操作,这时需要用 submit
3、 submit()可以进行 Exception 处理
例如,如果 task 里会抛出 checked 或者 unchecked exception,而你又希望外面的调用者能够感知这些 exception 并做出及时的处理,那么就需要用到submit(),通过对 Future.get()进行抛出异常的捕获,然后对其进行处理。
Was this helpful?
0 / 0