थ्रेड ऑपरेशंस से मान लौटाना
मल्टीथ्रेडेड प्रोग्रामिंग में, थ्रेड्स के बीच इंटरैक्शन के लिए अक्सर डेटा के आदान-प्रदान की आवश्यकता होती है। एक सामान्य परिदृश्य एक अलग थ्रेड के भीतर किए गए ऑपरेशन के परिणाम को पुनः प्राप्त करने का प्रयास कर रहा है।
नीचे दिए गए उदाहरण कोड पर विचार करें:
public void test() {
Thread uiThread = new HandlerThread("UIHandler") {
public synchronized void run() {
int value = 2; // To be returned to test()
}
};
uiThread.start();
}
इस उदाहरण में, एक मान को एक अलग थ्रेड (इस मामले में, "यूआईहैंडलर") के भीतर संशोधित किया जाता है। चुनौती इस मान को कॉलर विधि में वापस करने में निहित है, जिसे संशोधित डेटा को पुनः प्राप्त करने की आवश्यकता है। आवश्यक डेटा को संग्रहीत और पुनः प्राप्त करने के लिए किसी ऑब्जेक्ट की स्थिति। उदाहरण के लिए, आप एक कस्टम क्लास बना सकते हैं जो रननेबल इंटरफ़ेस को लागू करता है, जिससे इसे थ्रेड के रूप में निष्पादित किया जा सकता है। इस वर्ग के भीतर, आपके पास थ्रेड द्वारा गणना किए गए मान को संग्रहीत करने के लिए एक फ़ील्ड हो सकता है:
पब्लिक क्लास फू रननेबल को लागू करता है { निजी अस्थिर पूर्णांक मूल्य; @ओवरराइड सार्वजनिक शून्य रन() { मान = 2; } सार्वजनिक पूर्णांक getValue() { वापसी मूल्य; } }
इस कार्यान्वयन के साथ, आप थ्रेड निर्माण और परिकलित मान की पुनर्प्राप्ति को अलग कर सकते हैं। यहाँ एक उदाहरण है:public class Foo implements Runnable {
private volatile int value;
@Override
public void run() {
value = 2;
}
public int getValue() {
return value;
}
}
मुख्य विचार
Foo foo = new Foo();
Thread thread = new Thread(foo);
thread.start();
thread.join();
int value = foo.getValue(); // Retrieve the modified value
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3