Difference between Runnable and Thread class in Java
๐ก Concept: Runnable vs Thread
Runnable is a functional interface representing a task to be executed, whereas Thread is a class that executes Runnable tasks.
๐ Quick Intro
Implement Runnable to define the task and pass it to a Thread instance to execute concurrently.
๐ง Analogy
Think of Runnable as a recipe and Thread as the chef executing that recipe.
๐ง Technical Explanation
- Runnable defines a single method
run()
for the task. - Thread class represents a thread of execution.
- Implementing Runnable is preferred for flexibility (allows inheritance).
- Thread class can be directly subclassed but limits inheritance.
- Runnable separates task from execution.
๐ฏ Use Cases
- โ Use Runnable for better object-oriented design.
- โ Use Thread subclassing for simple cases.
- โ Combine Runnable with Executor framework for advanced concurrency.
๐ป Runnable vs Thread Example
// Using Runnable
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
// Using Thread subclass
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
public class Demo {
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable());
t1.start();
MyThread t2 = new MyThread();
t2.start();
}
}

โ Interview Q&A
Q1: What is Runnable in Java?
A: Functional interface with run() method.
Q2: Can Runnable be used without Thread?
A: No, Runnable must be executed by a Thread.
Q3: Which is preferred: Runnable or Thread?
A: Runnable for flexibility.
Q4: Can Thread extend other classes?
A: No, Thread class is final in some implementations.
Q5: Does Runnable separate task and execution?
A: Yes.
Q6: Can multiple Threads run the same Runnable?
A: Yes.
Q7: What happens if Thread is subclassed?
A: Less flexible design.
Q8: Is Runnable a class or interface?
A: Interface.
Q9: How to execute Runnable?
A: Pass to Thread and call start().
Q10: Can Thread be used without Runnable?
A: Yes, by overriding run().
๐ MCQs
Q1. What is Runnable in Java?
- Class
- Interface
- Functional interface with run() method
- Abstract class
Q2. Can Runnable be used without Thread?
- Yes
- No
- Sometimes
- Only in Java 8+
Q3. Which is preferred: Runnable or Thread?
- Runnable
- Thread
- Both
- None
Q4. Can Thread extend other classes?
- Yes
- No
- Sometimes
- Only in Java 9+
Q5. Does Runnable separate task and execution?
- No
- Yes
- Sometimes
- No difference
Q6. Can multiple Threads run the same Runnable?
- Yes
- No
- Sometimes
- Only one
Q7. What happens if Thread is subclassed?
- More flexible
- Less flexible design
- No effect
- None
Q8. Is Runnable a class or interface?
- Class
- Interface
- Abstract class
- Object
Q9. How to execute Runnable?
- Call run()
- Pass to Thread and call start()
- Call main()
- Use ExecutorService
Q10. Can Thread be used without Runnable?
- Yes
- No
- Sometimes
- Only in Java 11+
๐ก Bonus Insight
Using Runnable promotes better design by separating task definition from thread execution.
๐ PDF Download
Need a handy summary for your notes? Download this topic as a PDF!