फ्यूचर्स की सूची पर कुशलतापूर्वक प्रतीक्षा करना
फ्यूचर्स की सूची से निपटते समय, लक्ष्य पूरा होने या उसके घटित होने तक इंतजार करना है किसी भी भविष्य में अपवाद. f.get() पर व्यक्तिगत कॉलों को शामिल करने वाला एक सरल दृष्टिकोण अनावश्यक प्रतीक्षा का कारण बन सकता है यदि कोई अपवाद जल्दी होता है।
CompletionService के साथ अनावश्यक प्रतीक्षा से बचना
इसका समाधान समस्या, कंप्लीशनसर्विस क्लास चलन में आती है। यह अतुल्यकालिक कार्यों को निष्पादित करने और उनके परिणाम उपलब्ध होते ही थ्रेड-सुरक्षित तरीके से पुनर्प्राप्त करने की अनुमति देता है। इसका उपयोग कैसे करें:
Executor executor = Executors.newFixedThreadPool(4);
CompletionService completionService = new ExecutorCompletionService(executor);
// Submit tasks to the service
for (int i = 0; i () {
@Override
public SomeResult call() {
// Task logic here
return result;
}
});
}
int received = 0;
boolean errors = false;
// Loop until all tasks are complete or an error occurs
while (received resultFuture = completionService.take(); // Blocks if nothing available
try {
SomeResult result = resultFuture.get();
received ;
// Process result here
} catch (Exception e) {
// Log error
errors = true;
}
}
// Consider canceling remaining tasks if an error occurred
कम्प्लीशनसर्विस दृष्टिकोण का उपयोग करके, आप वास्तविक समय में कार्यों के पूरा होने की निगरानी कर सकते हैं और यदि कोई त्रुटि होती है तो आगे की प्रक्रिया रोक सकते हैं, इस प्रकार अनावश्यक प्रतीक्षा से बच सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3