उपज फ़ंक्शन
फ़ंक्शन यह सुनिश्चित करने का प्रयास करता है कि जो थ्रेड अधिक महत्वपूर्ण है, वह थ्रेड के बजाय पहले चलता है जो निष्पादित होने में बहुत अधिक समय ले रहा है और महत्वपूर्ण भी नहीं है।
जब थ्रेड java.lang.Thread.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("In control of " + Thread.currentThread().getName() + " thread"); } } 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("In control of " + Thread.currentThread().getName() + " thread"); } } }
आउटपुट
In control of main thread In control of main thread In control of main thread In control of Thread-0 thread In control of Thread-0 thread In control of Thread-0 thread
डेमो नामक एक वर्ग थ्रेड वर्ग का विस्तार करता है। यहां, एक 'रन' फ़ंक्शन को परिभाषित किया गया है जो तत्वों के एक सेट पर पुनरावृति करता है और 'getName' फ़ंक्शन का उपयोग करके थ्रेड का नाम प्राप्त करता है। 'Demo_one' नामक एक वर्ग मुख्य फ़ंक्शन को परिभाषित करता है जहां एक नया उदाहरण बनाया जाता है और इसे 'स्टार्ट' फ़ंक्शन का उपयोग करके शुरू किया जाता है। यहां भी, तत्वों को पुनरावृत्त किया जाता है और उपज फ़ंक्शन को थ्रेड पर कहा जाता है।
-
एक बार जब थ्रेड ने यील्ड विधि का उपयोग करके निष्पादन पूरा कर लिया है, तो कई थ्रेड्स हैं जो प्रोसेसर संसाधनों के लिए प्रतिस्पर्धा करते हैं। यह निर्दिष्ट करने का कोई तरीका नहीं है कि कौन सा थ्रेड पहले निष्पादित होगा।
-
एक बार जब थ्रेड यील्ड मेथड को एक्जीक्यूट कर लेता है, तो यह रनिंग स्टेट से रननेबल स्टेट में चला जाता है।
-
यील्ड मेथड का इस्तेमाल तभी किया जा सकता है जब प्लेटफॉर्म प्री-इम्पेक्टिव शेड्यूलिंग को सपोर्ट करता हो।
-
जब थ्रेड अपने निष्पादन के दौरान रुक जाता है, तो यह सुनिश्चित करने का कोई तरीका नहीं है कि उसे जल्द या बाद में मौका मिलेगा, यह सब शेड्यूलिंग एल्गोरिथम और थ्रेड शेड्यूलर पर निर्भर करता है।