<p>What is the difference between using the <code>Runnable</code> and <code>Callable</code> interfaces when designing a concurrent thread in Java, why would you choose one over the other?</p>

See explanation
here
.
The Callable interface is similar to
  Runnable, in that both are designed
  for classes whose instances are
  potentially executed by another
  thread.
A Runnable, however, does not
  return a result and cannot throw a
  checked exception.