execute(runnable x) 没有返回值。可以执行任务,但无法判断任务是否成功完成。
submit(runnable x) 返回一个future。可以用这个future来判断任务是否成功完成。
在java5之后,任务分两类:一类是实现了runnable接口的类,一类是实现了callable接口的类。
两者都可以被executorservice执行
runnable任务没有返回值(见上面代码),callable中的call()方法类似runnable的run()方法,就是前者有返回值,后者没有。
同样,将runnable的对象传递给executorservice的submit方法,则该run方法自动在一个线程上执行,并且会返回执行结果future对象,但是在该future对象上调用get方法,将返回null。
当将一个callable的对象传递给executorservice的submit方法,则该call方法自动在一个线程上执行,并且会返回执行结果future对象。
参考文章:
submit与execute区别
<a href="http://blog.csdn.net/ryantotti/article/details/6956175" target="_blank">http://blog.csdn.net/ryantotti/article/details/6956175</a>
callable与runable接口
<a href="http://blog.csdn.net/yuzhiboyi/article/details/7775266" target="_blank">http://blog.csdn.net/yuzhiboyi/article/details/7775266</a>