Skip to content

Instantly share code, notes, and snippets.

@manimuttu
manimuttu / Difference between Callable and Runnable interfaces
Created June 30, 2015 01:42
Difference between Callable and Runnable in Java - Interview question
http://java67.blogspot.sg/2013/01/difference-between-callable-and-runnable-java.html
Difference between CallableRunnable interface in Java is one of the interesting question from my list of Top 15 Java multi-threading questions, and it’s also very popular in various Java Interviews. Callable interface is newer than Runnable interface and added on Java 5 release along with other major changes e.g. Generics, Enum, Static imports and variable argument method. Though both CallableRunnable interface are designed to represent task, which can be executed by any thread, there is some significant difference between them. In my opinion, major difference between Callable and Runnable interface is that Callable can return result of operation performed inside call() method, which was one of the limitation with Runnable interface. Another significant difference between RunnableCallable interface is ability to throw checked exception. Callable interface can throw checked exception because it's call method throws Exception
@manimuttu
manimuttu / Threads
Created June 29, 2015 09:37
Threads - Java Interview
1. What can multiple threads do that a single thread cannot?
First of all, threads cannot speed up execution of code. They do not make the computer run faster. All they can do is increase the efficiency of the computer by using time that would otherwise be wasted. In certain types of processing this optimization can increase efficiency and decrease running time.
The simple answer is yes. You can write any code to be run on a single thread. Proof: A single processor system may only run instructions linearly. Having multiple lines of execution is done by the operating system processing interrupts, saving the state of the current thread, and starting another one.
The complex answer is ... more complex! The reason that multithreaded programs may often be more efficient than linear ones is because of a hardware "problem". The CPU can execute calculations more quickly than memory and hard storage IO. So, an "add" instruction, for example, executes far more quickly than a "fetch". Caches and dedicated program ins