CompletableFuture এর উন্নত সংস্করণ

Concurrency Enhancements (কনকারেন্সি উন্নতি) - জাভা (Java 10) - Computer Programming

266

Java 8-এ CompletableFuture যোগ করার মাধ্যমে asynchronous programming বা non-blocking operations কার্যকরভাবে করা সম্ভব হয়েছে। এটি আপনাকে future টাস্কগুলির ফলাফল asynchronously প্রাপ্ত করার পাশাপাশি, একাধিক asynchronous টাস্ক পরিচালনা করতে সহায়তা করে। Java 9 এবং পরবর্তী সংস্করণে CompletableFuture-এ বেশ কিছু নতুন ফিচার এবং উন্নত সংস্করণ অন্তর্ভুক্ত করা হয়েছে, যা asynchronous প্রোগ্রামিংকে আরও সহজ এবং কার্যকরী করে তুলেছে।


CompletableFuture এর উন্নত সংস্করণ:

1. CompletableFuture-এ newStage() পদ্ধতি (Java 9)

Java 9-এ CompletableFuture তে newStage() নামক একটি নতুন পদ্ধতি যোগ করা হয়েছে, যা CompletableFuture এর একটি নতুন স্টেজ তৈরি করতে ব্যবহৃত হয়। এটি একটি callback পদ্ধতির মাধ্যমে নির্দিষ্ট asynchronous কাজ চালায়।

ব্যবহার:
newStage() পদ্ধতি একটি নতুন CompletionStage তৈরি করে এবং এর সাথে অ্যাসিনক্রোনাস অপারেশন পরিচালনা করতে সহায়তা করে।

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> result = future.newStage(() -> "World");

এখানে newStage() ব্যবহার করে একটি নতুন stage তৈরি করা হয়েছে, যেটি CompletableFuture এর পরে একযোগভাবে একাধিক কাজ পরিচালনা করতে সাহায্য করবে।


2. orTimeout() পদ্ধতি (Java 9)

Java 9-এ orTimeout() পদ্ধতি যোগ করা হয়েছে, যা একটি timeout নির্ধারণ করে। যদি নির্দিষ্ট সময়ের মধ্যে CompletableFuture ফলাফল না দেয়, তাহলে একটি TimeoutException ছুড়ে দেবে।

ব্যবহার:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // কিছু দীর্ঘ সময়ের কাজ
    return "Hello, World!";
});

future.orTimeout(5, TimeUnit.SECONDS) // 5 সেকেন্ডের মধ্যে ফলাফল না এলে টাইমআউট
    .exceptionally(ex -> "Timed Out")
    .thenAccept(System.out::println);

এটি নিশ্চিত করে যে নির্দিষ্ট সময়ের মধ্যে asynchronous কাজ সম্পন্ন না হলে, প্রোগ্রাম টাইমআউট হয়ে যাবে এবং একটি exception হ্যান্ডলিং করবে।


3. completeAsync() পদ্ধতি (Java 9)

Java 9-এ completeAsync() পদ্ধতি অন্তর্ভুক্ত করা হয়েছে, যা আপনি যদি কোনো নির্দিষ্ট value asynchronously পূর্ণ করতে চান, তবে ব্যবহার করা যায়।

ব্যবহার:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Initial Value")
        .completeAsync(() -> "Completed Value");

future.thenAccept(System.out::println);  // Output: "Completed Value"

এটি তখন ব্যবহৃত হয় যখন আপনি CompletableFuture এর মাধ্যমে সম্পন্ন হওয়া কাজের ফলাফল পরিবর্তন করতে চান এবং asynchronous প্রসেসিংয়ের মধ্যে তা করবেন।


4. exceptionally() পদ্ধতি (Java 9)

Java 9-এ exceptionally() পদ্ধতি উন্নত করা হয়েছে, যা CompletableFuture এ কোনো exception হলে তা সামলাতে ব্যবহৃত হয়। আপনি যদি asynchronous কাজের মধ্যে কোনো exception handle করতে চান তবে এটি সাহায্য করবে।

ব্যবহার:

CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
    if (true) throw new RuntimeException("Error occurred");
    return 1;
});

future.exceptionally(ex -> {
    System.out.println(ex.getMessage());  // Error occurred
    return 0;  // Default value
});

এটি exception handling সহজ করে এবং নিশ্চিত করে যে asynchronous কাজ চলতে থাকা অবস্থায় exception সঠিকভাবে হ্যান্ডেল করা হবে।


5. allOf() এবং anyOf() পদ্ধতির উন্নতি

Java 9 এবং পরবর্তী সংস্করণে CompletableFuture.allOf() এবং CompletableFuture.anyOf() পদ্ধতিগুলিতে কিছু নতুন সুবিধা এসেছে। এগুলি একাধিক asynchronous task পরিচালনার জন্য ব্যবহৃত হয়:

  • allOf(): সমস্ত futures সফল হলে একত্রে প্রাপ্ত হয়।
  • anyOf(): যেকোনো একটি future প্রথমে পূর্ণ হলে তা প্রাপ্ত হয়।

ব্যবহার:

CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> {
    // কিছু কাজ
});
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> {
    // কিছু কাজ
});

CompletableFuture<Void> allOf = CompletableFuture.allOf(future1, future2);
allOf.thenRun(() -> System.out.println("All tasks completed"));

CompletableFuture<Object> anyOf = CompletableFuture.anyOf(future1, future2);
anyOf.thenAccept(result -> System.out.println("One task completed: " + result));

এই পদ্ধতিগুলির মাধ্যমে আপনি একাধিক asynchronous কাজের মধ্যে synchronization করতে পারেন, যাতে একসাথে বা যেকোনো একটি কাজ সম্পন্ন হলে পরবর্তী কাজ চালানো সম্ভব হয়।


CompletableFuture এর উন্নত সংস্করণ ব্যবহার করার সুবিধা:

  1. Non-blocking execution: Asynchronous কাজগুলো non-blocking থাকে, ফলে কাজ সম্পন্ন হওয়ার পর অন্য কাজের সাথে সমান্তরালভাবে চলতে পারে।
  2. Improved Exception Handling: Java 9 এবং পরবর্তী সংস্করণে Exception Handling আরও উন্নত করা হয়েছে, যা খুঁটিনাটি ত্রুটিগুলোকেও সঠিকভাবে হ্যান্ডেল করতে সহায়ক।
  3. Simplified asynchronous programming: Java 9 থেকে CompletableFuture এর নতুন পদ্ধতিগুলি asynchronous প্রোগ্রামিংকে আরও সহজ এবং পরিষ্কার করে তুলেছে।
  4. Timeout Management: orTimeout() পদ্ধতি যোগ হওয়ার ফলে asynchronous কাজের জন্য টাইমআউট নির্ধারণ করা সহজ হয়ে গেছে, যা পূর্বে কঠিন ছিল।
  5. Parallel Task Execution: allOf() এবং anyOf() পদ্ধতির মাধ্যমে একাধিক asynchronous কাজ সমান্তরালে করা সম্ভব, যা পারফরম্যান্সের উন্নতি ঘটায়।

উপসংহার:

Java 9 এবং তার পরবর্তী সংস্করণে CompletableFuture তে বেশ কিছু উন্নত ফিচার এবং পদ্ধতি অন্তর্ভুক্ত করা হয়েছে, যা asynchronous প্রোগ্রামিং আরও সহজ, কার্যকরী এবং পারফরম্যান্স-বান্ধব করেছে। orTimeout(), newStage(), exceptionally(), এবং completeAsync() এর মত নতুন ফিচারগুলো non-blocking অপারেশন পরিচালনা এবং exception handling সহজ করেছে, যা জাভার asynchronous প্রোগ্রামিংয়ের অভিজ্ঞতাকে নতুন উচ্চতায় নিয়ে গেছে।

Content added By
Promotion

Are you sure to start over?

Loading...