Thread: Thread is a lightweight process. Thread requires less memory space and resources to create and exists in the process, thread shares data and resources of the process.
Every Java application has at least one Thread (main thread). There are some threads running in the background by default like garbage collector, memory management etc. But as a application's point of view we can create more then one threads as per our requirement.
Java provides two ways to create a thread programmatically.
- Implementing the java.lang.Runnable
interface.
- Extending the java.lang.Thread class.
Example of creating thread by implementing Runnable interface:
RunnableThreadExample.java
package com.evon.threads;
public class RunnableThreadExample implements Runnable {
@Override
public void run() {
System.out.println("Runnable Thread processing - START "+Thread.currentThread().getName());
try {
Thread.sleep(1000);
//Get database connection, delete unused data from DB
doDBProcessing();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" Runnable Thread processing - END "+Thread.currentThread().getName());
}
private void doDBProcessing() throws InterruptedException {
Thread.sleep(5000);
}
}
Example of creating thread by extending Thread class :
ThreadExample2.java
package com.evon.threads;
public class ThreadExample2 extends Thread {
public ThreadExample(String name) {
super(name);
}
@Override
public void run() {
System.out.println(" Thread Example 2 - START "+Thread.currentThread().getName());
try {
Thread.sleep(1000);
//Get database connection, delete unused data from DB
doDBProcessing();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" Thread Example 2 - END "+Thread.currentThread().getName());
}
private void doDBProcessing() throws InterruptedException {
Thread.sleep(5000);
}
}
MainThread.java
package com.evon.threads;
public class MainThread {
public static void main(String[] args){
Thread t1 = new Thread(new RunnableThreadExample(), "Thread1");
Thread t2 = new Thread(new RunnableThreadExample(), "Thread2");
System.out.println("Starting Runnable threads");
t1.start();
t2.start();
System.out.println("Runnable Threads has been started");
Thread t3 = new ThreadExample2("Thread3");
Thread t4 = new ThreadExample2("Thread4");
System.out.println("Starting ThreadExample2");
t3.start();
t4.start();
System.out.println("ThreadExample2 has been started");
}
}
Output :
Starting Runnable threads
Runnable Threads has been started
Runnable Thread processing - START Thread1
Runnable Thread processing - START Thread2
Starting ThreadExample2
Thread Example 2- START Thread3
ThreadExample2 has been started
Thread Example 2 - START Thread4
Runnable Thread processing - END Thread2
Thread Example 2 - END Thread3
Thread Example 2 - END Thread4
Runnable Thread processing - END Thread1
0 Comment(s)