Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 36

Multithreading

Multithreading क्या है

Multithreading program को कई काम एक साथ चलाने देता है, हर एक अपने thread में। एक बार में एक चीज़ करने के बजाय, program, उदाहरण के लिए, data download करते हुए भी user को respond कर सकता है। Java में threads बनाने और चलाने का built-in support है।

💡 Thread execution का अलग रास्ता है। Multithreading कई को एक साथ चलाता है।

Thread बनाना (Thread)

class MyThread extends Thread {
    public void run() {
        System.out.println("Thread running");
    }
}
// इस्तेमाल:
MyThread t = new MyThread();
t.start();     // नया thread शुरू करता है
Thread running

एक तरीका है Thread extend करके run() को चलाने वाले code से override करना। start() call करना नया thread launch करता है जो run() चलाता है।

Thread बनाना (Runnable)

class MyTask implements Runnable {
    public void run() {
        System.out.println("Task running");
    }
}
// इस्तेमाल:
Thread t = new Thread(new MyTask());
t.start();
Task running

बेहतर तरीका है Runnable implement करके उसे Thread को भेजना। यह आपकी class को दूसरी class extend करने को स्वतंत्र रखता है, क्योंकि यह Thread पर inheritance इस्तेमाल नहीं करता।

run बनाम start

MyThread t = new MyThread();
t.run();     // गलत: मौजूदा thread पर चलता है, कोई नया thread नहीं
t.start();   // सही: नया thread शुरू करता है, फिर run() चलाता है

यह classic गलती है। start() नया thread बनाकर उस पर run() call करता है। सीधे run() call करना बस code सामान्य रूप से चलाता है, बिल्कुल कोई concurrency नहीं।

Thread lifecycle

  • New — बना पर शुरू नहीं।
  • Runnable — start() के बाद, चलने को तैयार।
  • Running — सक्रिय रूप से run() चला रहा।
  • Blocked/Waiting — रुका, resource या signal का इंतज़ार।
  • Terminated — run() ख़त्म होने पर पूरा।

Threads क्यों इस्तेमाल करें

  • Responsiveness — task background में चलते हुए UI काम करता रहे।
  • Speed — multi-core CPUs पर स्वतंत्र tasks समानांतर करना।
  • Efficiency — इंतज़ार समय (जैसे network देरी) को दूसरे काम को इस्तेमाल करना।

Threads शक्तिशाली हैं, पर उनके बीच साझा data को सावधानी चाहिए — synchronization देखिए।

आम गलतियाँ

  • start() के बजाय run() call करना। तब कोई नया thread नहीं बनता।
  • दूसरी class extend करनी हो तब Thread extend करना। इसके बजाय Runnable इस्तेमाल कीजिए।
  • Synchronization बिना data साझा करना। यह threads के बीच data corrupt कर सकता है।
  • Fixed order की उम्मीद। Threads स्वतंत्र चलते हैं; order पक्का नहीं।

सारांश

  • Multithreading कई tasks एक साथ चलाता है, हर एक thread में।
  • Threads Thread extend करके या Runnable implement करके बनाइए।
  • Runnable बेहतर ताकि आपकी class फिर भी दूसरी extend कर सके।
  • नया thread launch करने को start() इस्तेमाल कीजिए, run() नहीं।
  • Thread New → Runnable → Running → (wait) → Terminated से गुज़रता है।

आगे, साझा data की रक्षा कीजिए synchronization से, या tasks compact लिखिए lambda expressions से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Java में multithreading क्या है?
Multithreading का मतलब program के कई हिस्से एक साथ चलाना, हर एक अपने thread में। यह program को कई काम साथ करने देता है — जैसे file download करते हुए interface responsive रखना।
Thread बनाने के दो तरीके क्या हैं?
आप Thread class extend करके run() override कर सकते हैं, या Runnable interface implement करके उसे Thread को भेज सकते हैं। Runnable आमतौर पर बेहतर है क्योंकि यह आपकी class को कुछ और extend करने को स्वतंत्र छोड़ता है।
run() और start() में क्या अंतर है?
start() नया thread बनाता है और फिर उस पर run() चलाता है, तो यह concurrently चलता है। सीधे run() call करना बस मौजूदा thread पर code चलाता है, कोई नया thread नहीं — आम गलती।
Thread extend करूँ या Runnable implement?
ज़्यादातर मामलों में Runnable implement कीजिए। चूँकि Java सिर्फ़ single class inheritance allow करती है, Thread extend करना वो एक slot इस्तेमाल कर लेता है। Runnable आपकी class को दूसरी class extend करने को स्वतंत्र रखता है और ज़्यादा लचीला है।
Thread lifecycle में कौन-सी states हैं?
Thread New, Runnable, Running, Blocked/Waiting, और Terminated से गुज़रता है। यह New के रूप में शुरू होता है, start() के बाद Runnable बनता है, चलता है, wait या block हो सकता है, और run() ख़त्म होने पर आख़िरकार terminate होता है।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicSynchronization आपकी प्रगति: 36 / 61 (59%) · Lesson 37 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें