Saya membuat contoh, saya ingin tahu bagaimana saya bisa mengembalikan nilai menggunakan CompletableFuture
? Saya juga mengubah CompletableFuture<Void> exeFutureList
menjadi CompletableFuture<Integer> exeFutureList
tetapi Eclipse selalu menyarankan untuk atur kembali ke Void.
Tolong beri tahu saya cara mengembalikan nilai menggunakan CompletableFuture.
Kode:
public class MainClass {
static ExecutorService exe = null;
static CompletableFuture<Void> exeFutureList = null;
public static void main(String[] args) {
exe = Executors.newFixedThreadPool(1);
exeFutureList = CompletableFuture.runAsync(new RunClass(8), exe);
}
static class RunClass implements Runnable {
private int num;
public RunClass(int num) {
// TODO Auto-generated constructor stub
this.num = num;
}
public void run() {
// TODO Auto-generated method stub
this.num = this.num + 10;
}
}
}
6
user2121
23 Mei 2015, 17:56
1 menjawab
Jawaban Terbaik
Runnable
hanyalah antarmuka dengan metode run
yang tidak mengembalikan apa pun.
Oleh karena itu runAsync
metode yang Anda gunakan mengembalikan CompletableFuture<Void>
Anda harus mengirimkan Supplier
, menggunakan supplyAsync metode:
final int arg = 8;
CompletableFuture<Integer> f = CompletableFuture.supplyAsync(() -> {
return arg + 10;
}, exe);
Anda juga dapat membuat implementasi Supplier<Integer>
Anda sendiri alih-alih menggunakan lambda.
11
Jean Logeart
23 Mei 2015, 18:06