yield फंक्शन
यह फंक्शन यह सुनिश्चित करने का प्रयास करता है कि अधिक महत्वपूर्ण थ्रेड पहले चले बजाय उस थ्रेड के जिसे निष्पादित होने में बहुत अधिक समय लग रहा है और वह महत्वपूर्ण भी नहीं है।
जब थ्रेड java.lang.Thread.yield मेथड को कॉल करता है, तो यह थ्रेड शेड्यूलर के लिए अपने निष्पादन को रोकने का संकेत है। थ्रेड शेड्यूलर इस संकेत को स्वीकार या अनदेखा करना चुनता है।
यदि थ्रेड yield फंक्शन को निष्पादित करता है, तो शेड्यूलर जांचता है कि क्या समान या उच्च प्राथमिकता वाला थ्रेड मौजूद है। यदि हां, तो वर्तमान थ्रेड को रननेबल या रेडी स्टेट में ले जाया जाता है और उस थ्रेड को प्रोसेसर संसाधन दिए जाते हैं।
yield फंक्शन का सिंटैक्स -
public static native void yield()
आइए एक उदाहरण देखें:
उदाहरण
import java.lang.*;
class Demo extends Thread{
public void run(){
for (int i=0; i<3 ; i++)
System.out.println("नियंत्रण में " + Thread.currentThread().getName() + " थ्रेड");
}
}
public class Demo_one{
public static void main(String[]args){
Demo my_obj = new Demo();
my_obj.start();
for (int i=0; i<3; i++){
Thread.yield();
System.out.println("नियंत्रण में " + Thread.currentThread().getName() + " थ्रेड");
}
}
}
आउटपुट
नियंत्रण में main थ्रेड नियंत्रण में main थ्रेड नियंत्रण में main थ्रेड नियंत्रण में Thread-0 थ्रेड नियंत्रण में Thread-0 थ्रेड नियंत्रण में Thread-0 थ्रेड
Demo नामक एक क्लास Thread क्लास को एक्सटेंड करती है। यहां, एक run फंक्शन परिभाषित किया जाता है जो एलिमेंट्स के एक सेट पर पुनरावृति करता है और getName फंक्शन का उपयोग करके थ्रेड का नाम प्राप्त करता है। Demo_one नामक एक क्लास मुख्य फंक्शन को परिभाषित करती है जहां एक नया इंस्टेंस बनाया जाता है और इसे start फंक्शन का उपयोग करके शुरू किया जाता है। यहां भी, एलिमेंट्स पर पुनरावृति की जाती है और थ्रेड पर यील्ड फंक्शन को कॉल किया जाता है।
एक बार जब थ्रेड यील्ड मेथड का उपयोग करके निष्पादन पूरा कर लेता है, तो कई थ्रेड्स प्रोसेसर संसाधनों के लिए प्रतिस्पर्धा करते हैं। यह निर्दिष्ट करने का कोई तरीका नहीं है कि कौन सा थ्रेड पहले निष्पादित होगा।
एक बार जब थ्रेड यील्ड मेथड को निष्पादित करता है, तो यह रनिंग स्टेट से रननेबल स्टेट में चला जाता है।
यील्ड मेथड का उपयोग केवल तभी किया जा सकता है जब प्लेटफॉर्म प्री-एम्प्टिव शेड्यूलिंग का समर्थन करता हो।
जब थ्रेड अपने निष्पादन के दौरान रुकता है, तो यह सुनिश्चित करने का कोई तरीका नहीं है कि इसे जल्द या बाद में मौका मिलेगा, यह सब शेड्यूलिंग एल्गोरिदम और थ्रेड शेड्यूलर पर निर्भर करता है।