Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • قائمة القراءة
  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©

Completable Future join() vs. get() in Java

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • •
  • 8 Jul, 2024
  • •
  • 2 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email
Completable Future join() vs. get() in Java
Completable Future join() vs. get() in Java
  • Java
  • Programming Language

المقدمة

الـ 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.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.
SubstackEqraatech - اقرأ-تِك

Get Method

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!

مقالات ذات صلة

  • Dependency Injection - Flutter in Depth 5 min read

    Dependency Injection - Flutter in Depth

    Mohamed Naif Mohamed Naif • 23 Jul, 2025
    Mohamed Naif Mohamed Naif
    Flutter Developer
    • Website
  • Deep Dive into Code Quality - Beyond Bugs 5 min read

    Deep Dive into Code Quality - Beyond Bugs

    Rowan Ibrahem Rowan Ibrahem • 1 Sep, 2024
    Rowan Ibrahem Rowan Ibrahem
    Flutter Developer
    • Website
  • Java Collections Cheatsheet 1 min read

    Java Collections Cheatsheet

    Mahmoud Youssef Mahmoud Youssef • 25 Aug, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Best Practices for Handling NullPointerException in Java 3 min read

    Best Practices for Handling NullPointerException in Java

    Mahmoud Youssef Mahmoud Youssef • 22 Aug, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Java Exceptions Cheatsheet 1 min read

    Java Exceptions Cheatsheet

    Alaa Elkzaz Alaa Elkzaz • 3 Aug, 2024
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • Lazy Evaluation in Java Streams 2 min read

    Lazy Evaluation in Java Streams

    Mahmoud Youssef Mahmoud Youssef • 4 Jul, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Stream FlatMap in Java with Examples 3 min read

    Stream FlatMap in Java with Examples

    Mahmoud Youssef Mahmoud Youssef • 2 Jul, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Introduction to Java HttpClient 3 min read

    Introduction to Java HttpClient

    Mahmoud Youssef Mahmoud Youssef • 26 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Full Guide Into Map and HashMap in Java 3 min read

    Full Guide Into Map and HashMap in Java

    Mahmoud Youssef Mahmoud Youssef • 24 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©