Quick Answer
Runnable.run() takes no args, returns void, can't throw checked exceptions. Callable.call() takes no args, returns a value (V), can throw checked exceptions. Use Runnable with execute(). Use Callable with submit() which returns Future - get() blocks until result is ready, throws ExecutionException wrapping any exception thrown in call(). CompletableFuture is the modern, composable alternative.
Answer
Runnable has no return value and cannot throw checked exceptions. Callable returns values and can throw exceptions. Callable works with Future for asynchronous results.
S
SugharaIQ Editorial Team
Verified Answer
This answer has been peer-reviewed by industry experts holding senior engineering roles to ensure technical accuracy and relevance for modern interview standards.