تسلسل CompletableFuture
سلسل العمليات غير المتزامنة دون حجب باستخدام CompletableFuture.
مقارنة الكود
✕ Pre-Java 8
Future<String> future =
executor.submit(this::fetchData);
String data = future.get(); // blocks
String result = transform(data);
✓ Java 8+
CompletableFuture.supplyAsync(
this::fetchData
)
.thenApply(this::transform)
.thenAccept(IO::println);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
قابل للتسلسل
اجمع الخطوات غير المتزامنة في خط معالجة مقروء.
غير محجوب
لا يجلس خيط في انتظار النتائج بلا عمل.
معالجة الأخطاء
exceptionally() و handle() لاسترداد الأخطاء بشكل نظيف.
الأسلوب القديم
Future.get() المحجوب
الأسلوب الحديث
CompletableFuture
منذ JDK
8
الصعوبة
متوسط
دعم JDK
تسلسل CompletableFuture
متاح
متاح على نطاق واسع منذ JDK 8 (مارس 2014)
كيف يعمل
تُتيح CompletableFuture خطوط معالجة غير متزامنة غير محجوبة. سلسل العمليات بـ thenApply و thenCompose و thenAccept. عالج الأخطاء بـ exceptionally(). اجمع عدة مستقبلات بـ allOf/anyOf.
توثيق ذو صلة