CompletableFuture<T> ক্লাস জাভাতে Future<T> ইন্টারফেস ইমপ্লিমেন্ট করে। CompletableFuture কে একটি Future হিসেবে ব্যবহার করা যেতে পারে যা এক্সপ্লিসিটলি কমপ্লিট হয়েছে। Future ইন্টারফেস অনেক ফিচার দেয় না, অ্যাসিনক্রোনাস কম্পিউটেশনের ফলাফল পেতে get() মেথড ব্যবহার করতে হয়, যা ব্লক করে, তাই একাধিক ডিপেনডেন্ট টাস্ক নন-ব্লকিং ফ্যাশনে চালানোর সুযোগ থাকে না। কিন্তু CompletableFuture ক্লাস একাধিক ডিপেনডেন্ট টাস্ক চেইন করার ফাংশনালিটি দেয় যা অ্যাসিনক্রোনাসলি চলে, তাই আমরা টাস্কের চেইন তৈরি করতে পারি যেখানে পরবর্তী টাস্ক বর্তমান টাস্কের ফলাফল উপলব্ধ হলে ট্রিগার হয়।
সিনট্যাক্স
public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T>
উদাহরণ
import java.util.function.Supplier;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureTest {
public static void main(String args[]) throws ExecutionException, InterruptedException {
Calculator calc = new Calculator(4, 7);
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(calc);
future.thenAccept(result -> {
System.out.println(result);
});
System.out.println("CompletableFutureTest End.... ");
Thread.sleep(10000);
}
}
// Calculator class
class Calculator implements Supplier<Integer> {
private int x, y;
public Calculator(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public Integer get() {
try {
Thread.sleep(3000);
} catch(InterruptedException e) {
e.printStackTrace();
}
return x + y;
}
}
আউটপুট
CompletableFutureTest End.... 11