Thread Lifecycle Java In Hindi
जावा प्रोग्रामिंग लैंग्वेज में थ्रेड लाइफसाइकल यूजर डिफाइन कस्टम मल्टीप्ल इंडिविजुअल थ्रेड स्टेट्स टास्क को कम्पलीशन स्टेप में इंडीकेट करता है. जहा कस्टम यूजर डिफाइन एक थ्रेड डिज़ाइन डेवलपमेंट से लेकर उसके एग्जीक्यूशन टर्मिनेशन होने तक प्रोसेस और वेट करता है।

जावा लैंग्वेज इसके यूजर को एक थ्रेड क्रिएट और मैनेज करने के लिए Thread क्लास प्रोवाइड करता है। याद रहे, जावा में एक थ्रेड अपनी पूरी लाइफसाइकिल में एक ही स्टेट कंडीशन में स्टेबल नहीं रहता है। यह अपने सेट एग्जीक्यूशन मेथड और JVM या ऑपरेटिंग सिस्टम के द्वारा किए गए एक्शन के आधार पर एक स्टेट से दूसरे स्टेट में आटोमेटिक मूव हो जाता है।
Java provides its users with six official thread states through the Thread.State enum.
- NEW thread State
- RUNNABLE thread State
- BLOCKED thread State
- WAITING thread State
- TIMED_WAITING thread State
- TERMINATED thread State
NEW java thread State.
जावा प्रोग्राम में जब यूजर के द्वारा कोई नया थ्रेड ऑब्जेक्ट क्रिएट होता है, लेकिन उसमे start() फंक्शन मेथड अभी तक कॉल नहीं किया गया है. तो उस स्टेट में थ्रेड NEW स्टेट में डिफाइन होता है।
Example of the NEW Java thread state.
class SampleThread extends Thread {
public void run() {
System.out.println(“New Thread is continuing”);
}
}
public class Main {
public static void main(String[] args) {
SampleThread th1 = new SampleThread();
// here th1 is in NEW thread state define
}
}
Here in the NEW Java thread state example.
SampleThread th1 = new SampleThread();
यहाँ इस एक्साम्प्ल में जब कोई थ्रेड ऑब्जेक्ट क्रिएट होता है, लेकिन इसमें थ्रेड क्लास ने अपने एग्ज़िक्यूशन मेथड को स्टार्ट नहीं किया है।
So here in this.
NEW → start() → RUNNABLE
RUNNABLE java thread State.
जब किसी जावा थ्रेड प्रोग्राम में start() फंक्शन मेथड को कॉल किया जाता है, तो यूजर डिफाइन थ्रेड RUNNABLE स्टेट में आटोमेटिक मूव हो जाता है।
th1.start();
इस स्टेट में आपका थ्रेड अब रन होने के लिए एलिजिबल है। आपके सिस्टम में इन्सटाल्ड ऑपरेटिंग सिस्टम/JVM शेड्यूलर यह फिक्स करता है कि उसे रियलटाइम में माइक्रोप्रोसेसर CPU साइकिल में प्रोसेसिंग टाइम कब मिलता है।
Example of RUNNABLE Java thread state.
class SampleThread extends Thread {
public void run() {
System.out.println(“Thread is continuing”);
}
}
public class Main {
public static void main(String[] args) {
SampleThread th1 = new SampleThread();
th1.start();
}
}
Key points about RUNNABLE Java thread state.
यहाँ इस जावा प्रोग्राम में, RUNNABLE थ्रेड स्टेट रन होने के लिए तैयार होना और, कॉन्सेप्चुअली, एक्टिव रूप से रन होना, दोनों टास्क इन्क्लुड हैं। जावा में Thread.State में कोई अलग ऑफिशियल RUNNING स्टेट मौजूद नहीं है।
BLOCKED java thread State.
किसी जावा प्रोग्राम में एक कस्टम थ्रेड BLOCKED थ्रेड स्टेट में तब एंटर या मूव करता है, जब वह मॉनिटर लॉक पाने का वेट कर रहा होता है।
इसमें जावा थ्रेड स्टेट तब एक्सेक्यूट होता है, जब उसी समय कोई दूसरा थ्रेड पहले से ही उसी ऑब्जेक्ट लॉक का यूज़ करके किसी सिंक्रोनाइज़्ड ब्लॉक या मेथड में एंटर कर चुका होता है।
Example of BLOCKED Java thread state.
class SampleTask {
synchronized void display() {
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
यहाँ माना कि इस स्टेट में एक थ्रेड पहले से ही display() फंक्शन को एग्जीक्यूट कर रहा है। यदि इसमें कोई अन्य थ्रेड उसी सिंक्रोनाइज़्ड मेथड में एंटर करने के लिए फाॅर्स करता है, तो वह थ्रेड स्टेट में लॉक अवेलेबल होने तक BLOCKED स्टेट में एंटर या मूव कर सकता है।
Basic thread blocking concept.
Thread X → यह थ्रेड टास्क प्रोसेस में लॉक को होल्ड करता है
Thread Y → यह थ्रेड टास्क प्रोसेस में लॉक पाने की कोशिश करता है
↓
Blocked thread state.
यह थ्रेड में लॉक अवेलेबल होने के बाद, थ्रेड Y RUNNABLE पर वापस मूव हो जाता है।
Waiting Java thread state.
जावा प्रोग्राम में एक थ्रेड लाइफसाइकिल वेटिंग स्टेट में तब मूव होता है, जब वह मौजूदा स्टेट में किसी अन्य थ्रेड टास्क के कुछ एक्शन परफॉर्म करने के लिए लंबे समय तक वेट करता है।
Example of the WAITING Java thread state.
th1.join();
यह थ्रेड कॉलिंग थ्रेड th1 मेथड के टर्मिनेट होने तक वेट करता है।
अन्य थ्रेड ऑपरेशन है, जो थेड वेटिंग स्टेट का कारण बन सकते हैं, उनमें शामिल हैं.
- Object.wait()
- Thread.join() बिना टाइमआउट के
- LockSupport.park()
Example of a waiting Java thread.
Thread th1 = new Thread(() -> {
System.out.println(“task thread”);
});
th1.start();
try {
th1.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
यहाँ थ्रेड प्रोसेस में join() फंक्शन मेथड को कॉल करने वाला थ्रेड th1 के टर्मिनेट होने का वेट करता है।
TIMED_WAITING Java thread state.
जावा प्रोग्राम में एक यूजर डिफाइन कस्टम थ्रेड TIMED_WAITING स्टेट में तब मूव होता है, जब वह अपने समय में एक तय समय तक टास्क के लिए वेट करता है।
Example of the TIMED_WAITING Java thread state.
Thread.sleep(4000);
यहाँ आपका मौजूदा थ्रेड मिनिमम 4 सेकंड तक वेट करता है।
Other thread timed waiting examples include.
th1.join(4000);
और इसके बाद.
object.wait(4000);
Example of a TIMED_WAITING Java thread.
class SampleThread extends Thread {
public void run() {
try {
Thread.sleep(4000);
System.out.println(“Sample Thread pause”);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
यहाँ थ्रेड में sleep() फंक्शन मेथड टाइम पीरियड के दौरान, थ्रेड TIMED_WAITING स्टेट में होता है।
थ्रेड टास्क वेट का टाइम टर्मिनेट होने के बाद, यह RUNNABLE स्टेट पर वापस आ सकता है।
Terminated Java thread state.
किसी जावा प्रोग्राम में एक थ्रेड टर्मिनेटेड स्टेट में तब डिस्प्ले होता है, जब उस थ्रेड का run() फंक्शन मेथड एग्जीक्यूशन अपने आप टर्मिनेट कर देता है।
Example of a terminated Java thread state.
class SampleThread extends Thread {
public void run() {
System.out.println(“Thread is performing”);
}
}
public class Main {
public static void main(String[] args) {
SampleThread th1 = new SampleThread();
th1.start();
try {
th1.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println(th1.getState());
}
}
यहाँ run() फंक्शन मेथड कम्पलीट होने के बाद, थ्रेड अपने आप टर्मिनेटेड हो जाता है।
इसके बाद टर्मिनेटेड थ्रेड को फिर से स्टार्ट नहीं किया जा सकता है।
th1.start(); // Display IllegalThreadStateException अगर th1 पहले ही टर्मिनेट हो चुका है, तो.
Diagram of a basic thread lifecycle in a Java program.
First, a Thread object is created.
|
v
+———+
| Creating a new thread |
+———+
|
start() method
|
v
+————-+
| Runnable Thread State |
+————-+
/ | \
/ | \
v v v
Blocked Waiting TIMED_WAITING Thread State
| | |
| | |
+———+———-+
|
v
Runnable Thread State
|
|
The run() method terminates.
|
v
+————-+
| Thread terminated |
+————-+
Complete thread lifecycle example in Java.
class SampleThread extends Thread {
public void run() {
System.out.println(“Thread is continuing”);
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println(“Java Thread Terminated”);
}
}
public class Main {
public static void main(String[] args) {
SampleThread th1 = new SampleThread();
System.out.println(th1.getState()); // here it NEW thread state started
th1.start();
System.out.println(th1.getState()); // here RUNNABLE or possibly another thread state mode
try {
th1.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println(th1.getState()); // here java thread finally TERMINATED
}
}
यहाँ इस एक्साम्प्ल में start() फंक्शन मेथड के तुरंत बाद इमीडियेट प्रिंट होने वाली सही स्टेट अलग हो सकती है, क्योंकि यह थ्रेड शेड्यूलिंग JVM/OS द्वारा कंट्रोल या मैनेज की जाती है।
Multiple Java Thread States Detail Explanation
| # | Multiple Thread State | Each Thread State Meaning |
| 1. | NEW State | In this state the new thread object created but start() function is not called during process |
| 2. | RUNNABLE State | In this state thread is ready to run or running state, it means your created thread ready for run |
| 3. | BLOCKED State | In this state user define thread is in waiting to acquire a monitor to lock its process |
| 4. | WAITING State | In this state thread waiting indefinitely for another thread/action to perform |
| 5. | TIMED_WAITING State | In this state thread is waiting for a specified amount of time to complete thread task |
| 6. | TERMINATED State | In this state finally thread has completed its execution process |
Thread States Summary in Thread Lifecycle.
जावा प्रोग्रामिंग में थ्रेड लाइफसाइकिल को याद रखने का आसान तरीका है.
आप एक थ्रेड स्टेट को एक कंपनी के एम्प्लॉई की तरह समझ सकते है.
- NEW State → इस थ्रेड स्टेट में एक नए एम्प्लॉई ने रजिस्टर किया है, लेकिन अभी स्टार्ट नहीं किया है।
- RUNNABLE State → इस थ्रेड स्टेट में एम्प्लॉई तैयार है, अभी वह एक्टिवली वर्क कर रहा है।
- BLOCKED State → इस थ्रेड स्टेट में एम्प्लॉई किसी रिसोर्स/लॉक मेथड का वेट कर रहा है।
- WAITING State → इस थ्रेड स्टेट में एम्प्लॉई किसी चीज़ टास्क का अनिश्चित टाइम तक वेट कर रहा है।
- TIMED_WAITING State → इस थ्रेड स्टेट में एम्प्लॉई एक तय समय के लिए ब्रेक ले रहा है।
- TERMINATED State → इस थ्रेड स्टेट में एम्प्लॉई ने अपना सभी टास्क कम्पलीट कर लिया है।
Conclusion of Thread Lifecycle in Java.
जावा प्रोग्रामिंग लैंग्वेज में थ्रेड लाइफसाइकल उन मल्टीप्ल इंडिविजुअल स्टेप्स सीक्वेंस स्टेट्स का सीक्वेंस है, जिनसे हर यूजर डिफाइन एक कस्टम थ्रेड अपने एग्जीक्यूशन समय के दौरान मल्टीप्ल स्टेप स्टेज में मूव करता है. जिसमे सभी थ्रेड टास्क एक NEW स्टेट से स्टार्ट होकर, RUNNABLE और इसके बाद BLOCKED, WAITING, या TIMED_WAITING मल्टीप्ल स्टेट से मूव करता रहता है, और अंत में TERMINATED थ्रेड स्टेट को अचीव करता है, जब उस थ्रेड स्टेट का एग्जीक्यूशन कम्पलीट हो जाता है।

