[Java Threads] Should we extend Thread Class or implement Runnable interface


These are very common questions that a beginner Java developer may ask while learning Multi-threading in Java programming.

What are the ways in which one can create a Java Thread ?

Answer : There are two ways. 1 : Using Thread class, 2 : Using Runnable Interface.

What is the difference between Thread and Runnable ?

Answer : Thread is a class from java.lang.Thread package , where as Runnable is an interface from java.lang.Runtime package.

Should use Thread Class or Runnable interface and Why?

Answer : It depends, but as much as possible we must make use of Runnable interface, We must try to extend a class only when we want to override some behavior. When we extend a class, the two classes are very tightly coupled to each other.

Example: Thread Class: hreadClassExample.java
package com.code2care.examples;

public class ThreadClassExample extends Thread {

	Thread thread;

	ThreadClassExample() {

		thread = new Thread(this);
		System.out.println(thread + " : Started!");
		thread.start();
	}

	@Override
	public void run() {

		for (int i = 1; i <= 10; i++) {
			System.out.println("Thread : " + thread.getName() + " " + i);
			
		}
    }

}
File: ThreadClient.java
package com.code2care.examples;

public class ThreadClient {

	public static void main(String[] args) {

		new ThreadClassExample();
	
	}
}
Example: Runnable Interface: RunnableExample.java
package com.code2care.examples;

public class RunnableExample implements Runnable {

	Thread thread;

	RunnableExample() {

		thread = new Thread(this);
		thread.start();

	}

	@Override
	public void run() {

		for (int i = 1; i <= 10; i++) {
			System.out.println("Thread : " + thread.getName() + " " + i);

		}
	}
}
ThreadClient.java
package com.code2care.examples;

public class ThreadClient {

	public static void main(String[] args) {

		new ThreadClassExample();
	}
}





Recent Posts:
Hello there!,

You are using AdBlocker!

I am an independent developer trying to help fellow developers and students to resolve issues faced on a day-to-day basis, we 'Code to Care' . There is a lot of expenses involved in hosting and managing a website that's the reason we have ads.

A humble request to you to disable adBlocker on Code2care.org and support us pay our bills.

Thanks,
Cod2ecare - Line's of code for change.

To see contents reload page after unblocking
Code2care is an initiative to publish and share varied knowledge in programming and technical areas gathered during day-to-day learnings and development activities.

Students and Software Developers can leverage this portal to find solutions to their various queries without re-inventing the wheel by referring to our easy to understand posts. Technical posts might include Learnings, Video Tutorials, Code Snippets, How Tos, Blogs, Articles, etc.