যদি আপনার Future
কোনও ExecutorService
পদ্ধতিতে কল করার ফলাফল হয় (উদাঃ submit()
), তবে তার CompletableFuture.runAsync(Runnable, Executor)
পরিবর্তে পদ্ধতিটি ব্যবহার করা সবচেয়ে সহজ ।
থেকে
Runnbale myTask = ... ;
Future<?> future = myExecutor.submit(myTask);
প্রতি
Runnbale myTask = ... ;
CompletableFuture<?> future = CompletableFuture.runAsync(myTask, myExecutor);
CompletableFuture
তারপর "নেটিভ" তৈরি করা হয়।
সম্পাদনা করুন: @SamMefford মন্তব্য অনুধাবন @MartinAndersson সংশোধন, যদি আপনি একটি প্রেরণ করতে ইচ্ছুক Callable
, আপনি কল করতে হবে supplyAsync()
, রূপান্তর Callable<T>
একটি মধ্যে Supplier<T>
সঙ্গে, যেমন:
CompletableFuture.supplyAsync(() -> {
try { return myCallable.call(); }
catch (Exception ex) { throw new RuntimeException(ex); }
}, myExecutor);
যেহেতু T Callable.call() throws Exception;
একটি ব্যতিক্রম নিক্ষেপ T Supplier.get();
করে এবং না করে, আপনাকে অবশ্যই ব্যতিক্রমটি ধরতে হবে যাতে প্রোটোটাইপগুলি সামঞ্জস্যপূর্ণ।