I found this in another blog that can explain it a little bit more these differences:
Though both the interfaces are implemented by the classes who wish to execute in a different thread of execution, but there are few differences between the two interface which are:
Callable<V>
instance returns a result of type V
, whereas a Runnable
instance doesn't.Callable<V>
instance may throw checked exceptions, whereas a Runnable
instance can'tThe designers of Java felt a need of extending the capabilities of the Runnable
interface, but they didn't want to affect the uses of the Runnable
interface and probably that was the reason why they went for having a separate interface named Callable
in Java 1.5 than changing the already existing Runnable
.