Concurrency متقدم

أدِر دورات حياة المهام المتزامنة كوحدة عمل واحدة.

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(2);
Future<User> u = exec.submit(this::fetchUser);
Future<Order> o = exec.submit(this::fetchOrder);
try {
    return combine(u.get(), o.get());
} finally { exec.shutdown(); }
✓ Java 25 (Preview)
try (var scope = new StructuredTaskScope
        .ShutdownOnFailure()) {
    var u = scope.fork(this::fetchUser);
    var o = scope.fork(this::fetchOrder);
    scope.join().throwIfFailed();
    return combine(u.get(), o.get());
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🛡️

لا تسريب للخيوط

تكتمل جميع المهام المتفرعة قبل إغلاق النطاق.

فشل سريع

ShutdownOnFailure يلغي المهام الشقيقة إذا فشلت إحداها.

📐

بنية واضحة

دورة حياة المهمة تتطابق مع النطاق المعجمي في الكود.

الأسلوب القديم
إدارة دورة حياة الخيوط يدوياً
الأسلوب الحديث
StructuredTaskScope
منذ JDK
25
الصعوبة
متقدم
التزامن المنظّم
معاينة

معاينة في JDK 25 (المعاينة الخامسة، JEP 505). يتطلب --enable-preview.

يعامل التزامن المنظّم مجموعةً من المهام المتزامنة كعملية واحدة. إذا فشلت أي مهمة فرعية أُلغيت الأخرى. يضمن النطاق عدم تسريب الخيوط ويوفر علاقات واضحة بين الوالد والطفل.

مشاركة 𝕏 🦋 in