6

CompletableFuture例を作成しました。?を使用して値を返す方法を知りたいです。も変更しCompletableFuture<Void> exeFutureListましたがCompletableFuture<Integer> exeFutureList、Eclipseは常にVoidに戻すことを提案しています。

CompletableFuture を使用して値を返す方法を教えてください。

コード:

    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;
        }

    }
}
4

1 に答える 1

11

Runnablerun何も返さないメソッドを持つ単なるインターフェースです。

したがって、runAsync使用しているメソッドはCompletableFuture<Void>

次のメソッドSupplierを使用して、を送信する必要があります。supplyAsync

final int arg = 8;
CompletableFuture<Integer> f = CompletableFuture.supplyAsync(() -> {
    return arg + 10;
}, exe);

Supplier<Integer>ラムダを使用する代わりに、独自の実装を作成することもできます。

于 2015-05-23T15:06:49.637 に答える