Threads are the lightweight processes. Java supports thread-based multitasking.
Thread-based multi-tasking means a single program executing several tasks in the form of threads.
The advantage of thread-based multitasking are:
1) threads share the same address space
2) threads cooperatively share the same process
3) inter-thread communication is inexpensive
4) context-switching from one thread to another is not time-consuming
Threads can be created using one of the following two methods:
1) By extending Thread class in java.lang package
2) By implementing the Runnable interface
In the following program, two threads are created: one thread will display all the even numbers in the range 0 to 10 while the second thread will display all the odd numbers in the range 0 to 10. The threads are created by implementing the runnable interface.
Program
//Program to create two threads
class EvenThread implements Runnable
{
Thread T;
String n;
EvenThread(String name)
{
n=name;
T = new Thread(this, n);
System.out.println("New thread: " + T);
T.start(); // Start the thread
}
// This is the entry point for thread.
public void run() {
try {
for(int i = 0; i<=10; i++) {
if (i%2==0)
System.out.println(n + ": " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println(n + "Interrupted");
}
System.out.println(n+ " exiting.");
}
}
class OddThread implements Runnable
{
Thread T;
String n;
OddThread(String name)
{
n=name;
T = new Thread(this, n);
System.out.println("New thread: " + T);
T.start(); // Start the thread
}
// This is the entry point for thread.
public void run() {
try {
for(int i = 0; i<=10; i++) {
if (i%2!=0)
System.out.println(n + ": " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println(n + "Interrupted");
}
System.out.println(n+ " exiting.");
}
}
class Thread_OddEven
{
public static void main(String args[])
{
OddThread o=new OddThread("Odd"); // start threads
EvenThread e=new EvenThread("Even");
try
{
e.T.join();
o.T.join();
} catch (InterruptedException e1) {
System.out.println("Main thread Interrupted");
}
System.out.println("Main thread exiting.");
}
}
OUTPUT
D:\Java\Programs>java Thread_OddEven
New thread: Thread[Odd,5,main]
New thread: Thread[Even,5,main]
Even: 0
Odd: 1
Even: 2
Odd: 3
Even: 4
Odd: 5
Even: 6
Odd: 7
Even: 8
Odd: 9
Even: 10
Odd exiting.
Even exiting.
Main thread exiting.