في هذه الصفحة
المقدمة
الـ CompletableFuture
واحدة من اهم وأقوى الـ Tools اللي بتخلينا نكتب Non-Blocking Code في الـ Java , واللي جت كامتداد وتطوير للـ Feature اللي أغلب الـ Legacy Codes معتمدة عليها.
ولما بنيجي نشتغل بالـ CompletableFuture
بيكون عندنا 2 Functions مهمين محتاجين نفهم الفرق بينهم كويس اوي الا وهم الـ join()
والـ get()
, وم الاتنين بيتم استعمالهم عشان نحصل على نتيجة الـ Task أو العملية اللي بتتـ Handle in Non-Blocking بعد ما بتخلص ولكن فيه فروقات بينهم محتاجين اننا نفهمها كويس.
CompletableFuture
الـ CompletableFuture
بتمثل لينا نتيجة مستقبلية من اسمها يعني هنحصل عليها في المستقبل بعد لما الـ Asynchronous Computation تخلص , فهي طريقة بتمكنا اننا نكتب Asynchronous Code بشكل يكون Readable و Maintainable بالمقارنة بالطرق التقليدية والقديمة زي الـ Callbacks.
طب ازاي نـ Create CompletableFuture ؟
نقدر نـ Create CompletableFuture
بالسهولة دي من خلال السطر التالي:
CompletableFuture<String> future = new CompletableFuture<>();
وطبعا لو عاوزين نبعت Task يتنفذ بشكل Asynchronous ممكن نعمل ده باستعمال Function زي supplyAsync
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
// Long time operation for example
return 5;
});
ولو عاوزين نحصل على نتيجة القيمة اللي حصلها الـ Computation ممكن وقتها نستعمل اما join()
او get()
زي كده:
Integer result = future.join(); // or future.get();
System.out.println(result); // Output: 5!
Join Method
الـ join()
طريقة بسيطة وسهلة لاننا نحصل بيها على نتيجة الـ CompletableFuture
وده لانها كل اللي بتعمله انها بتستنى الـ Computation تنتهي وتخلص وبعدين ترجع النتيجة.
ولو هنا العملية اللي بيتم حسابها والشغل عليها قابلت مشكلة أو Exception بمعنى أدق , وقتها الـ join()
هتـ throw unchecked exception فلو عاوزين نشوف مع بعض الـ Method Signature عاملة ازاي اصلا في الـ join()
هنلاقيها بالشكل الآتي :
public T join()
وطبعا طالما بتـ Throw Unchecked Exception ده معناه ان مش محتاجين نعمل Explicit Handling أو Declaration في الـ Method Signature أي Exceptions هتحصل أو نعمل Try Catch.
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉