मैं उलझन में हूँ के बारे में कैसे मैं हल करना चाहिए इस परिदृश्य में एक गैर अवरुद्ध तरीके से.
दो अभिनेताओं पर विचार Actor1
और Actor2
के भीतर Actor1
Map<Int, Int> foo() {
List<String> finalList = foo_2();
Map<Int, Int> finalMap = // do stuff with finalList to get Map<Int, Int>;
return finalMap;
}
List<String> foo_2() {
CompletableFuture<List<String>> Querylist = ask(Actor2)
Querylist.get();
return QueryList;
}
वर्तमान में भीतर foo_2, Querylist.get()
एक अवरुद्ध कॉल. मैं करने के लिए चाहते हैं किसी भी तरह से इस को हल में एक गैर अवरुद्ध तरीके से. मैं बनाया एक संदेश के लिए एडाप्टर के लिए Actor2
अंदर Actor1
इसलिए किसी भी संदेश है कि Actor2
भेजता है द्वारा नियंत्रित किया जाएगा Actor1
.
मैं निम्नलिखित दृष्टिकोण को संशोधित करने के लिए अवरुद्ध कॉल
Map<Int, Int> foo() {
CompletionStage<List<String>> finalList = foo_2();
finalList.whenComplete(
// what to do here?
)
// Map<Int, Int> finalMap = // do stuff with finalList to get Map<Int, Int>;
return finalMap;
}
CompletionStage<List<String>> foo_2() {
CompletionStage<List<String>> Querylist = ask(Actor2)
return QueryList;
}
मैं नहीं हूँ यकीन है कि कैसे करने के लिए सही ढंग से उपयोग CompletionStage का निर्माण करने के लिए एक ही परिणाम मिलता है मैं हो रही थी के साथ एक अवरुद्ध वायदा.मिल() कॉल.