Middle
Чӣ тавр CompletableFuture дар Java лозим аст?
sobes.tech AI
Ҷавоб аз AI
CompletableFuture برای اجرای ناهمزمان وظایف و ترکیب عملیات ناهمزمان استفاده میشود. این نتیجه یک عملیات ناهمزمان است که ممکن است در آینده تکمیل شود.
مزایای اصلی و دلایل استفاده:
- اجرای ناهمزمان: امکان اجرای وظایف در پسزمینه، بدون مسدود کردن جریان اصلی.
- ترکیب عملیات ناهمزمان: امکان اتصال چندین وظیفه ناهمزمان، تعیین نحوه اجرای آنها به صورت متوالی یا موازی، و پردازش نتایج آنها.
- پردازش استثناها: ارائه مکانیزمهایی برای مدیریت خطاها در وظایف ناهمزمان.
- انعطافپذیری: پشتیبانی از روشهای مختلف برای پردازش نتیجه (مثلاً، استفاده از تابع، اجرای وظیفه بعدی) و تعیین جریانهای اجرا.
نمونههای استفاده:
-
اجرای چندین وظیفه مستقل به صورت موازی و انتظار برای اتمام آنها:
// نمونه اجرای موازی دو وظیفه CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> { // عملیات طولانی ۱ return "نتیجه ۱"; }); CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> { // عملیات طولانی ۲ return "نتیجه ۲"; }); CompletableFuture<Void> combinedFuture = CompletableFuture.allOf(future1, future2); combinedFuture.join(); // انتظار برای اتمام هر دو وظیفه -
اجرای متوالی عملیات ناهمزمان:
// نمونه اجرای متوالی وظایف CompletableFuture<String> initialFuture = CompletableFuture.supplyAsync(() -> "مقدار اولیه"); CompletableFuture<Integer> transformedFuture = initialFuture.thenApplyAsync(result -> { // تبدیل نتیجه return result.length(); }); transformedFuture.thenAccept(length -> { System.out.println("طول رشته: " + length); }); -
پردازش استثناها:
// نمونه پردازش استثنا CompletableFuture<String> errorFuture = CompletableFuture.supplyAsync(() -> { if (true) { throw new RuntimeException("خطا رخ داد"); } return "موفقیت"; }).exceptionally(ex -> { System.err.println("پردازش خطا: " + ex.getMessage()); return "خطای پردازش شده"; // مقدار جایگزین }); System.out.println(errorFuture.join());