जावा ट्यूटोरियल

जावा होम जावा परिचय जावा प्रारंभ करें जावा सिंटेक्स जावा टिप्पणियाँ जावा चर जावा डेटा प्रकार जावा टाइप कास्टिंग जावा ऑपरेटर्स जावा स्ट्रिंग्स जावा मठ जावा बूलियन जावा अगर ... और जावा स्विच जावा जबकि लूप लूप के लिए जावा जावा ब्रेक/जारी रखें जावा सरणी

जावा तरीके

जावा तरीके जावा विधि पैरामीटर्स जावा विधि ओवरलोडिंग जावा स्कोप जावा रिकर्सन

जावा क्लासेस

जावा ओओपी जावा क्लासेस/ऑब्जेक्ट्स जावा क्लास एट्रीब्यूट्स जावा क्लास मेथड्स जावा कंस्ट्रक्टर्स जावा संशोधक जावा एनकैप्सुलेशन जावा पैकेज / एपीआई जावा विरासत जावा बहुरूपता जावा इनर क्लासेस जावा एब्स्ट्रैक्शन जावा इंटरफ़ेस जावा Enums जावा उपयोगकर्ता इनपुट जावा तिथि जावा ऐरेलिस्ट जावा लिंक्डलिस्ट जावा हैश मैप जावा हैशसेट जावा इटरेटर जावा रैपर क्लासेस जावा अपवाद जावा रेगेक्स जावा धागे जावा लैम्ब्डा

जावा फ़ाइल हैंडलिंग

जावा फ़ाइलें जावा फ़ाइलें बनाएँ/लिखें जावा फ़ाइलें पढ़ें जावा फ़ाइलें हटाएं

जावा कैसे करें

दो नंबर जोड़ें

जावा संदर्भ

जावा कीवर्ड जावा स्ट्रिंग तरीके जावा गणित के तरीके

जावा उदाहरण

जावा उदाहरण जावा कंपाइलर जावा व्यायाम जावा प्रश्नोत्तरी जावा प्रमाणपत्र


जावा धागे


जावा धागे

थ्रेड्स एक प्रोग्राम को एक ही समय में कई चीजें करके अधिक कुशलता से संचालित करने की अनुमति देता है।

मुख्य कार्यक्रम को बाधित किए बिना पृष्ठभूमि में जटिल कार्यों को करने के लिए थ्रेड्स का उपयोग किया जा सकता है।


एक धागा बनाना

एक धागा बनाने के दो तरीके हैं।

इसे कक्षा का विस्तार करके और इसकी विधि Threadको ओवरराइड करके बनाया जा सकता है:run()

सिंटैक्स बढ़ाएँ

public class Main extends Thread {
  public void run() {
    System.out.println("This code is running in a thread");
  }
}

थ्रेड बनाने का दूसरा तरीका Runnableइंटरफ़ेस को लागू करना है:

सिंटैक्स लागू करें

public class Main implements Runnable {
  public void run() {
    System.out.println("This code is running in a thread");
  }
}

चल रहे धागे

यदि वर्ग वर्ग का विस्तार करता है Thread, तो कक्षा का एक उदाहरण बनाकर और इसकी start()विधि को कॉल करके धागा चलाया जा सकता है:

उदाहरण बढ़ाएँ

public class Main extends Thread {
  public static void main(String[] args) {
    Main thread = new Main();
    thread.start();
    System.out.println("This code is outside of the thread");
  }
  public void run() {
    System.out.println("This code is running in a thread");
  }
}

यदि वर्ग Runnableइंटरफ़ेस को लागू करता है, तो थ्रेड को ऑब्जेक्ट के कंस्ट्रक्टर को क्लास का एक उदाहरण पास करके Threadऔर फिर थ्रेड की start()विधि को कॉल करके चलाया जा सकता है:

उदाहरण लागू करें

public class Main implements Runnable {
  public static void main(String[] args) {
    Main obj = new Main();
    Thread thread = new Thread(obj);
    thread.start();
    System.out.println("This code is outside of the thread");
  }
  public void run() {
    System.out.println("This code is running in a thread");
  }
}

"विस्तार" और "कार्यान्वयन" थ्रेड्स के बीच अंतर

मुख्य अंतर यह है कि जब कोई वर्ग थ्रेड वर्ग का विस्तार करता है, तो आप किसी अन्य वर्ग का विस्तार नहीं कर सकते हैं, लेकिन रननेबल इंटरफ़ेस को लागू करके, इसे किसी अन्य वर्ग से भी विस्तारित किया जा सकता है, जैसे: वर्ग MyClass extends OtherClass implements Runnable


समवर्ती समस्याएं

चूंकि थ्रेड प्रोग्राम के अन्य भागों की तरह ही चलते हैं, इसलिए यह जानने का कोई तरीका नहीं है कि कोड किस क्रम में चलेगा। जब धागे और मुख्य कार्यक्रम समान चर पढ़ और लिख रहे हैं, तो मान अप्रत्याशित हैं। इससे उत्पन्न होने वाली समस्याओं को समवर्ती समस्याएँ कहते हैं।

उदाहरण

एक कोड उदाहरण जहां परिवर्तनीय राशि का मान अप्रत्याशित है:

public class Main extends Thread {
  public static int amount = 0;

  public static void main(String[] args) {
    Main thread = new Main();
    thread.start();
    System.out.println(amount);
    amount++;
    System.out.println(amount);
  }

  public void run() {
    amount++;
  }
}

समवर्ती समस्याओं से बचने के लिए, थ्रेड्स के बीच यथासंभव कुछ विशेषताओं को साझा करना सबसे अच्छा है। यदि विशेषताओं को साझा करने की आवश्यकता है, तो एक संभावित समाधान यह isAlive() जांचने के लिए थ्रेड की विधि का उपयोग करना है कि क्या थ्रेड बदल सकता है किसी भी विशेषता का उपयोग करने से पहले थ्रेड चलना समाप्त हो गया है।

उदाहरण

isAlive()समवर्ती समस्याओं को रोकने के लिए उपयोग करें :

public class Main extends Thread {
  public static int amount = 0;

  public static void main(String[] args) {
    Main thread = new Main();
    thread.start();
    // Wait for the thread to finish
    while(thread.isAlive()) {
    System.out.println("Waiting...");
  }
  // Update amount and print its value
  System.out.println("Main: " + amount);
  amount++;
  System.out.println("Main: " + amount);
  }
  public void run() {
    amount++;
  }
}