Java in hindi | Multithreading

Share on facebook
Share on google
Share on twitter
Share on linkedin
  • Introduction to java multithreading in Hindi
  • Thread class implementation in java multithreading in Hindi
  • Runnable interface implementation in java multithreading in Hindi

Introduction to Java Multithreading

Java thread class, java runnable interface और thread synchronization आदि java multithreading से सम्बंधित topics java में है।

आइये java multithreading को एक simple उदाहरण से समझते है। हम सब phone पर बात करते हुए खाना खा सकते है और साथ ही TV भी देख सकते है। क्योंकि हमारा दिमाग इस तरह प्रोग्राम किया हुआ है की हम एक साथ कई काम कर सकते है। इसे multitasking कहा जाता है।

इसी तरह java का कोई भी प्रोग्राम एक साथ कई टास्क complete कर सकता है। Java के इस feature को multithreading कहते है। उदाहरण के लिए जब आपका प्रोग्राम user input के लिए wait कर रहा है तो इस समय में multithreading के द्वारा वह दूसरा कोई काम complete कर सकता है। जैसे की database से connectivity की जा सकती है या फिर किसी file को upload किया जा सकता है। 

What is Thread?

एक multithreading java प्रोग्राम के 2 या 2 से अधिक parts होते है। ये parts एक साथ execute किये जाते है। हर part thread कहलाता है। हर thread एक unique task complete करने के लिए responsible होती है।

ये सभी threads main thread में होती है। Main थ्रेड main() method के साथ शुरू होती है। Java में main thread multithreading का हिस्सा होती है और बाकी सभी thread इसके under होती है। यदि main thread terminate हो जाती है तो बाकी सभी threads भी terminate हो जाती है।

Thread Life Cycle

Java multithreading process में हर thread की एक life cycle होती है। इस life cycle में thread कई stages से गुजरती है।

जब आप Thread class का object क्रिएट करते है, तो सबसे पहले एक thread new state में आती है। इसके बाद जब thread object पर start() मेथड कॉल किया जाता है तो thread runnable state में पहुँच जाती है। और फिर जब run() method कॉल होता है तो thread running state में होती है। यह state java multithreading process में सबसे अहम् होती है। यदि thread को execution के लिए wait करना पड़े तो thread waiting state में पहुंच जाती है। जब thread का execution complete हो जाता है तो तो thread destroyed stage में पहुँच जाती है।

Java में multithreading 2 तरह से implement की जा सकती है। पहले तरीके में आप java Thread class को extend करते है। और दूसरे तरीके में आप Runnable interface को implement करते है।

जब आप चाहते है की आप run() मेथड के अलावा दूसरे methods भी program में यूज़ करे तो आप Thread class को extend कर सकते है। जैसा की शुरआत में ही बताया गया है thread class java multithreading के लिए उपयोग की जाती है और बहुत ही महत्वपूर्ण है। लेकिन यदि आप सिर्फ run() override करना चाहते है तो आप Runnable interface implement कर सकते है।

Java Thread Class Implementation

Java में Thread class बहुत सारे methods provide करती है। लेकिन Thread class को implement करने के लिए आपको इन सभी methods को override करने की आवश्यकता नहीं है। आप सिर्फ run() method override कर सकते है जो java में multithreading perform करने के लिए सबसे महत्वपूर्ण है।

MethodDescription
getName()Returns name of thread.
getPriority()Returns priority of thread.
isAlive()Returns true if thread is alive.
join()Joins two threads.
run()Threads task is defined in this method.
sleep()Make a sleep for given time in milliseconds.
start()Start a thread.

Steps to Implement Thread Class

Java में multithreading perform करने लिए thread class को उपयोग करना सबसे आसान तरीका है। सबसे पहले आपको Thread class को extend करना होगा। इसके बाद आप अपनी class में run method को override करते है। यदि आप चाहे तो और भी methods को override कर सकते है। लेकिन java में multithreading perform करने के लिए run() method को override करना necessary होता है।

इसके बाद आप अपनी इस class का object create करते है। Object create करते समय आप चाहे तो thread का एक unique नाम भी पास कर सकते है। Object create करने के बाद आप उस object पर start() method कॉल करते है। start() मेथड automatically run() method को call करता है, और आपके thread का execution start हो जाता है। आप जितनी threads create करना चाहते है उतने ही object create करते है।

Example1: Implement Thread Class

class JavaHindi extends thread 
{ 
    public static void main(String args[]) 
    { 
         JavaHindi jh = new JavaHindi(); 
 
         jh.start();   
    }  
 
    Public void run() 
    { 
          System.out.println(“Thread is running at www.besthinditutorials.com”); 
    } 
}

Java Runnable Interface Implementation

यदि आप java में सिर्फ multithreading perform करना चाहते है और कोई additional functionality नहीं चाहते तो इसके लिए runnable interface उपयोग कर सकते है।

Runnable interface में एक ही method होता है। run() method की definition आपको अपनी class में provide करनी होती है। सबसे पहले आप एक class create करते है, जो run() मेथड को implement करती है। इसके बाद आप Thread class का object क्रिएट करते है। इस Thread class के object में आप Runnable interface को implement करने वाली class का object और thread का नाम पास करते है।

और उसके बाद आप Thread class के object पर start() method को call करते है। जब आप Runnable interface को implement करने वाली क्लास का object thread क्लास के object में pass करते है तो Thread क्लास का object उसी class के object को point करता है।

Example2: Implement Runnable Interface

class JavaHindi implements Runnable 
{ 
    JavaHindi() 
    { 
        Thread t = new Thread(this,HindiThread); 
        t.start(); 
    }    
 
    Public void run() 
    { 
          System.out.println(“Thread is running at www.besthinditutorials.com”); 
    } 
 
    public static void main(String args[]) 
    { 
         JavaHindi jh = new JavaHindi(); 
    }  
 
}

Synchronization 

Java में multithreading perform करते समय जब 2 या 2 से अधिक thread किसी एक resource (method) पर access चाहती है, तो conflict पैदा होता है। इस conflict से बचने के लिए आप एक technique यूज़ करते है। इस technique से एक समय पर एक ही thread वो resource access कर सकती है। इस technique को synchronization कहते है। 

Synchronization की technique में आप किसी method को synchronized बना देते है। इसके लिए आप उस मेथड की definition से पहले synchronized keyword add कर देते है। जैसे की synchronized void myMethod(){}.   

Java multithreading के लिए synchronization के concept को समझने के लिए आपको monitor का concept समझना होगा। हर object के साथ उसका monitor जुड़ा होता है। जब कोई thread synchronized मेथड को call करती है, तो वो थ्रेड monitor में enter हो जाती है। जैसे ही thread monitor में enter होती है उस resource पर lock लग जाता है। अब जब तक ये thread इस resource को free नहीं करेगी तब तक दूसरी कोई भी thread इस resource को access नहीं कर सकती है। 

Steps to Make an Object Synchronized

किसी भी resource को synchronized बनाने के 2 तरीके होते है। एक तो जैसे की मैने आपको बताया आप method के आगे synchronized keyword लगा सकते है और उसे synchronized बना सकते है। दूसरे तरीके में आप एक synchronized block create करते है। और इस block में उस class के methods को कॉल करते है, जिनको आप synchronized बनाना चाहते है।

Example3: Create Synchronized Method

Synchronized(s1) // s1 is the object of class of which methods you are going to call 
{ 
   // call here methods that you want to make synchronized 
}

Exams और interviews के point of view से java multithreading एक बहुत ही important concept है।  

Previous: Java Packages
Next: Java File I/O