天天看点

Callable与Runable接口 submit与execute区别

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>