Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा कंकरेंसी - yield() मेथड

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 फंक्शन का उपयोग करके शुरू किया जाता है। यहां भी, एलिमेंट्स पर पुनरावृति की जाती है और थ्रेड पर यील्ड फंक्शन को कॉल किया जाता है।

  • एक बार जब थ्रेड यील्ड मेथड का उपयोग करके निष्पादन पूरा कर लेता है, तो कई थ्रेड्स प्रोसेसर संसाधनों के लिए प्रतिस्पर्धा करते हैं। यह निर्दिष्ट करने का कोई तरीका नहीं है कि कौन सा थ्रेड पहले निष्पादित होगा।

  • एक बार जब थ्रेड यील्ड मेथड को निष्पादित करता है, तो यह रनिंग स्टेट से रननेबल स्टेट में चला जाता है।

  • यील्ड मेथड का उपयोग केवल तभी किया जा सकता है जब प्लेटफॉर्म प्री-एम्प्टिव शेड्यूलिंग का समर्थन करता हो।

  • जब थ्रेड अपने निष्पादन के दौरान रुकता है, तो यह सुनिश्चित करने का कोई तरीका नहीं है कि इसे जल्द या बाद में मौका मिलेगा, यह सब शेड्यूलिंग एल्गोरिदम और थ्रेड शेड्यूलर पर निर्भर करता है।

  1. - जावा में अनाम क्लास का उपयोग करके थ्रेड कैसे बनाएं?

    Thread एक कार्यक्षमता है जिसे प्रोग्राम के अन्य भाग के साथ समवर्ती रूप से निष्पादित किया जा सकता है। सभी जावा प्रोग्राम्स में कम से कम एक थ्रेड होता है, जिसे मुख्य थ्रेड के रूप में जाना जाता है, जिसे जावा वर्चुअल मशीन (JVM) द्वारा प्रोग्राम शुरू होने पर बनाया जाता है जब main() मेथड को मुख्य थ्रेड क

  1. - जावा में isDaemon() मेथड का महत्व?

    डेमन थ्रेड जावा में कम-प्राथमिकता वाला थ्रेड है जो बैकग्राउंड में चलता है और ज्यादातर JVM द्वारा गार्बेज कलेक्शन (GC) जैसे बैकग्राउंड कार्यों को करने के लिए बनाया जाता है। यदि कोई यूजर थ्रेड नहीं चल रहा है तो JVM डेमन थ्रेड्स के चलने पर भी बाहर निकल सकता है। डेमन थ्रेड का एकमात्र उद्देश्य यूजर थ्रे

  1. - Java 8 में इंटरफेस संवर्द्धन (Interface Enhancements)

    Java 8 इंटरफेस में डिफ़ॉल्ट मेथड कार्यान्वयन की एक नई अवधारणा पेश करता है। यह क्षमता बैकवर्ड कम्पैटिबिलिटी के लिए जोड़ी गई है ताकि पुराने इंटरफेस Java 8 की लैम्ब्डा एक्सप्रेशन क्षमता का लाभ उठा सकें। उदाहरण के लिए, List या Collection इंटरफेस में forEach मेथड डिक्लेरेशन नहीं है। इस तरह के मेथड को ज