हेल्लो दोस्तों आज के इस पोस्ट में आपको Multithreading in java in hindi के बारे में पूरी तरह डिटेल्स से बताया गया है तो चलिए शुरू करते है
Contents
- Java Multi-threading का परिचय
- what is thread?
- Concurrent Execution of two or more Threads
- thread life cycle
- Thread priority
- Ways to Implement Multithreading in java
- java thread class implementation
- run() method
- Steps to perform Multithreading using thread class
- java runnable interface implement
- steps to perform multithreading using runnable interface
- synchronization
Java Multi-threading का परिचय
जब आप एक प्रोग्राम लिखते है तो उसमे अलग अलग functions और classes के रूप में कई टास्कस डिफाइन करते है इसके बाद जब उस प्रोग्राम को compile किया जाता है तो compiler उसे error के लिए check करता है और सही होने पर उस प्रोग्राम को executable फाइल में convert किया जाता है
यह executable फाइल CPU द्वारा execute की जाती है और सभी टास्कस sequence में एक के बाद एक परफॉर्म किये जाते है यहाँ पर आप sequence का मतलब है की जिस आर्डर में उन टास्कस को डिफाइन किया था उसी आर्डर में वे execute होते है और जब तक एक टास्क पूरा नही हो जाता है दुसरे टास्क का execution शुरू नहीं होता है
इन टास्क को execute करने के दौरान कई बार CPU को वेट(wait) करना पद जाता है यह wait कई कारणों की वजह में हो सकती है जैसे की यूजर input delay ,नेटवर्क कनेक्शन problem या किसी दूसरी प्रोसेस की वजह से भी CPU को wait करना पड़ सकता है
लेकिन यहाँ पर wait करना इतना important नहीं है जबकि important यह है की इस wait के दौरान CPU ideal condition में रहता है यानी की CPU और कोई दूसरा टास्क न परफॉर्म करके सिर्फ wait करना है यह CPU के time की बर्बादी होती है
यह wait time कोई दूसरा टास्क को परफॉर्म करने में utilize किया जा सकता है लेकिन ऐसा नहीं होता है ऐसी सिचुएशन में CPU के time का पूर्ण रूप से utilization करने के लिए java programs में multi-threading feature को implement किया जाता है
इसे भी पढ़े-inheritance java क्या है
Multithreading in java in hindi
what is thread?
thread को “a program in execution” phrase द्वारा डिफाइन किया जाता है यानी की जब कोई प्रोग्राम execution में होता है या जब किसी प्रोग्राम का execution चल रहा होता है तो वह प्रोग्राम thread कहलाता है
अब तक आपने सिर्फ single thread java program create किये है जिसमे सिर्फ एक ही thread होती है जो उस program के main() method द्वारा represent की जाती है multithreading की language में main() method को main thread भी कहा जाता है
single thread programs में main thread डिफाइन और एक मात्र thread होती है इसी में आप अपने सभी टास्क करते है जो बाद में CPU द्वारा sequence में execute किये जाते है
Concurrent Execution of two or more Threads
java प्रोग्राम में एक ही single thread (main thread) को प्रयोग करने के बजाय आज और दूसरी threads भी डिफाइन कर सकते है ऐसा करके आप java के multithreading feature को implement करते है
दो या दो से अधिक threads होने पर CPU के time का पूर्ण utilization संभव हो जाता है क्योकि जब एक thread किसी कारण वंश wait करती है तो उस समय में CPU दूसरी threads की execute करता है
इस प्रकार प्रोग्राम में एक से अधिक threads डिफाइन करके आप CPU के time का पूर्ण utilization करते है और इससे आपकी एप्लीकेशन भी फ़ास्ट हो जाती है
thread life cycle
java में जो भी thread आप create करते है उसकी एक life cycle होती है यह life cycle execution के दौरान उस thread द्वारा acquire की जाने वाली different states द्वारा डिफाइन की जाती है ये static changes thread के different method के कॉल होने पर होते है
new->runnable->running->destroyed
new->runnable->running->waiting->destroyed
जब आप thread class का ऑब्जेक्ट create करते है तो वह thread अपनी सबसे पहली state new में आ जाती है इसके बाद जब thread object पर start() method call किया जाता है तो thread runnable state में पहुच जाती है
इसके बाद जब run() method कॉल होता है तो thread running state में होता है यह state java multithreading प्रोसेस में सबसे अहम् होती है इस state में उस thread में डिफाइन किये गए है टास्क execute होते है
यदि thread को execution के लिए wait करना पड़े तो waiting state में पहुच जाती है जब thread का execution complete हो जाता है तो thread destroyed स्टेज में पंहुचा जाता है
Thread priority
java में हर thread की एक priority होती है by default threads ये priority अपनी parent thread से inherit करती है
priority को numerically 1 से लेकर 10 तक के numbers के द्वारा डिफाइन किया जाता है जहा पर 1 minimum priority (MIN_PRIORITY) होती है और 10 maximum priority (MAX_PRIORITY)कहा जाता है
java में एक thread की priority का उपयोग thread execution को manage करने के लिए किया जाता है सभी thread का execution उनकी priority के अनुसार ही होता है जिस thread की priority सबसे अधिक होती है वह सबसे पहले execute की जाती है
किसी thread की priority access करने के लिए java में getPriority() method उपयोग किया जाता है और thread की priority सेट करने के लिए setPriority() method का प्रयोग किया जाता है
Ways to Implement Multithreading in java
java में multithreading 2 तरह से implement की जा सकती है पहले तरीके में आप thread class को extend करते है और दुसरे तरीके में runnable interface को implement किया जाता है
जब आप चाहते है की आप run() method के आलावा दुसरे methods भी प्रोग्राम में प्रयोग करे तो आप thread class को extend कर सकते है लेकिन यदि आप सिर्फ run() override करना चाहते है तो आप runnable interface implement करते है
java thread class implementation
java में multithreading का परफॉर्म करने के लिए required मेथोड्स thread class provide करती है thread class में डिफाइन किये गए सभी method default implementation के साथ available है
इसके आलावा जिस method को आप चाहे अपनी class में override कर सकते है
thread class में 30 से भी अधिक methods availabe है उनमे से कुछ important methods यहाँ बताये जा रहे है
Method | Description |
getName() | Returns name of thread |
getPriority() | Return 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 |
Multithreading perform करने के लिए आपको इन सभी methods को override करने की आवश्यकता नहीं है आप सिर्फ run() method override कर सकते है जो java में multithreading परफॉर्म करने के लिए सबसे important है
thread class में लगभग 4 constructors भी डिफाइन किये गए है जो अलग अलग multithreading requirements के अनुसार execute किये जा सकते है
run() method
चाहे आप multithreading(Multithreading in java in hindi) परफॉर्म करने के लिए कोई सा भी तरीका प्रयोग करे लेकिन आपको run() को override/डिफाइन करना आवश्यक होता है क्योकि run() method में thread के द्वारा execute किये जाने वाले टास्क defined होते है
यह method start() method द्वारा call किया जाता है जैसे ही आप thread object के द्वारा start() method कॉल करते है तो run() method start() method द्वारा कॉल कर दिया जाता है
thread class को implement करते समय आप दुसरे methods भी override कर सकते है लेकिन इस run() method override करना अनिवार्य होता है इसी प्रकार runnable interface को implement करने पर भी run() method की definition provide करना अनिवार्य होता है
Steps to perform Multithreading using thread class
- सबसे पहले आप thread class को extend करते है
- इसके बाद आप अपनी class में run() method को override करते है
- इसके बाद आप अपनी class(class जिससे आपने thread class को implement किया था ) का object create करते है object create करते समय constructor को thread का unique नाम भी pass किया जा सकता है
- इसके बाद आप उस object पर start method कॉल करते है
- इसके बाद start() method द्वारा run() method call किया जाता है और आपकी thread का execution शुरू हो जाता है
example 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”); } }
java runnable interface implement
java में multithreading परफॉर्म करने का दूसरा तरीका runnable interface को implement करना है runnable एक functional interface है इसमे सिर्फ एक ही run() method डिफाइन किया गया है जिसकी definition आप अपनी class में provide करते है
steps to perform multithreading using runnable interface
runnable interface को दुबारा multithreading को perform करने के steps आगे बताये जा रहे है
- सबसे पहले आप एक class create करते है जो run() method को implement करती है और उस class create करते है
- इसके बाद आप thread class का एक object create करते है और argument के रूप में constructor को runnable interface को implement करने वाली class और thread का नाम pass करते है
- इसके बाद thread class के object method कॉल करते है और thread का execution शुरू हो जाता है
यहाँ पर ध्यान देने योग्य बात यह है की इस situation में thread class का object भी runnable interface को implement करने वाली class को ही पॉइंट करता है
example implement runnable interface
class javahindi implement runnable { javahindi() { thread t=new thread(this ,....); t.start(); } public void run() { system.out.println(“thread is .......”) } public static void main(string args[]) { javahindi jh=new javahindi(); } }
synchronization
java में multithreading परफॉर्म करते समय जब 2 से या 2 से अधिक thread किसी एक rosource(method) पर access चाहती है तो conflict पैदा होती है इस conflict से बचने के लिए आप एक technique का प्रयोग करते है इस technique से एक समय पर एक ही thread वो रिसोर्स access कर सकती है इस technique को synchronization कहते है
synchronization की technique में आप किसी method को synchronozed बना देते है इसके लिए आप उस method की definition से पहले synchronozed add कर देते है जैसे
synchronization void mymethod(){ }
java multithreading में synchronization के concept को समझें के लिए आपको मॉनिटर उसका मॉनिटर जुड़ा होता है जब कोई thread synchronized method को कॉल करती है तो वो thread मॉनिटर में enter हो जाती है जैसे ही thread मॉनिटर में enter होती है उस रिसोर्स पर lock लग जाता है अब जब तक ये thread इस रिसोर्स को फ्री नहीं करेंगी तब तक दूसरी कोई भी thread इस रिसोर्स को access नहीं सकती है
steps to make an object synchronized
किसी भी रिसोर्स को synchronized बनाने के 2 तरीके होता है एक तो जैसे की मैंने आपको बताया आप method के आगे synchronized keyword लगा सकते है और उसे synchronized बना सकते है दुसरे तरीके ये आप एक synchronized block create करते है और इस block उस class के methods को call करते है जिनको आप synchronized बनाना चाहते है
example 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 }
NOTE-exam और interviews के point of views से java multithreading एक बहुत ही important concept है
reference-https://www.javatpoint.com/multithreading-in-java#:~:
Multithreading in java in hindi
निवेदन:-आप सभी छात्र –छात्रों से निवेदन है की अगर आपको ये Topic(Multithreading in java in hindi) अच्छा लगा हो तो कृपया आप इस वेबसाइट के बारे में अपने दोस्तों को जरुर बताये अगर कोई topic(Multithreading in java in hindi) से संबधित प्रश्न हो तो कमेंट्स(comments) आपके लिए ही बना है और किसी Subject के लेकर भी कोई प्रश्न हो तो कमेंट करे