Java: Multithreading


Java के programs में Instructions sequentially एक के बाद एक execute होती है, मतलब पहले program का एक part run होगा और उसके बाद दूसरा part run होगा। Multithreading, Java का ऐसा feature है जिसका use कर के हम program के दो या दो से अधिक parts को एक साथ run करा सकते है, ऐसा करने से CPU का अधिकतम use किया जा सकता है।
Program के प्रत्येक part को thread कहते है। Thread को दो तरीको से create किया जा सकता है -

  1. Extending the Thread class
  2. Implementing the Runnable Interface

Extending the Thread class

इस तरह से thread create करने के लिए पहले Java.lang.Thread class को extend करना होगा, फिर उस class में जो run( ) method है उस को override करना होगा। Thread इसकी life cycle run( ) method में शुरू करती है। उसके बाद नई class का Object create करेंगे और उस object से start( ) method को call करेंगे। जिससे start( ) method, run( ) method को invoke करेगा और thread execution start हो जाएगा। आप जितनी भी thread create करना चाहते है उतने ही object create करने पड़ेंगे।

Multithreading Example-

Program:

public class MyClass extends Thread {
public void run( ) {
try {
System.out.println ("Thread " + Thread.currentThread( ).getId( ) + " is running");
}
catch ( Exception e ) {
System.out.println ("Exception is caught");
}
}
public static void main( String args[ ] ) {
for( int i=0; i<5; i++ ) {
MyClass myObj=new MyClass();
myObj.start();
}
}
}


Output:

Thread 8 is running
Thread 9 is running
Thread 10 is running
Thread 11 is running
Thread 12 is running


Implementing the Runnable Interface

इस तरह से thread create करने के लिए पहले नई class को create करना होगा, फिर उस class में java.lang.Runnable interface को implement करना पड़ेगा उसके बाद जो run( ) method है उस को override करना होगा, फिर नई class का Object create करेंगे और उस object से start( ) method को call करेंगे। जिससे start( ) method, run( ) method को invoke करेगा और thread execution start हो जाएगा। आप जितनी भी thread create करना चाहते है उतने ही object create करने पड़ेंगे।

Multithreading Example-

Program:

public class MyClass implements Runnable {
MyClass( ) {
Thread myThread = new Thread(this);
myThread.start( );
}
public void run( ) {
try {
System.out.println ("Thread " + Thread.currentThread( ).getId( ) + " is running");
}
catch ( Exception e ) {
System.out.println ("Exception is caught");
}
}
public static void main( String args[ ] ) {
for( int i=0; i<5; i++ ) {
MyClass myObj=new MyClass();
}
}
}


Output:

Thread 8 is running
Thread 9 is running
Thread 10 is running
Thread 11 is running
Thread 12 is running