multithreding in java.
- Multithreading is a Java feature that allows concurrent execution of two or more parts of a program for maximum utilization of CPU.
- Each part of such program is called a thread. So, threads are light-weight processes within a process.
- Threads can be created by using two mechanisms :
1. Extending the Thread class
2. Implementing the Runnable Interface
- Thread creation by extending the Thread class
- We create a class that extends the java.lang.Thread class.
- This class overrides the run() method available in the Thread class.
- A thread begins its life inside run() method. We create an object of our new class and call start() method to start the execution of a thread. S
- ) invokes the run() method on the Thread object.
- Thread Class vs Runnable Interface
1. If we extend the Thread class, our class cannot extend any other class because Java doesn’t support multiple inheritance. But, if we implement the Runnable interface, our class can still extend other base classes.
2. We can achieve basic functionality of a thread by extending Thread class because it provides some inbuilt methods like yield(), interrupt() etc. that are not available in Runnable interface.
- This article is contributed by Mehak Narang. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Attention reader! Don’t stop learning now. G
- hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Thread creation by implementing the Runnable Interface
- We create a new class which implements java.lang.Runnable interface and override run() method. T
- we instantiate a Thread object and call start() method on this object.
// Java code for thread creation by implementing
// the Runnable Interface
class MultithreadingDemo implements Runnable
{
public void run()
{
try
{
// Displaying the thread that is running
System.out.println ("Thread " +
Thread.currentThread().getId() +
" is running");
}
catch (Exception e)
{
// Throwing an exception
System.out.println ("Exception is caught");
}
}
}
// Main Class
class Multithread
{
public static void main(String[] args)
{
int n = 8; // Number of threads
for (int i=0; i<n; i++)
{
Thread object = new Thread(new MultithreadingDemo());
object.start();
}
}
}
Output :
Thread 8 is running Thread 9 is running Thread 10 is running Thread 11 is running Thread 12 is running Thread 13 is running Thread 14 is running Thread 15 is running