猿问

Java:带有 ListenableFuture 的番石榴期货 API

我试图通过简单的示例更好地理解番石榴 API:首先我实例化返回“hello”的 ListenableFuture 然后我使用 Futures.transform() 将我的“hello”转换为“HELLO”但我没有得到任何结果。


这是我的代码(我删除了 ListenableFuture 实现中的其他方法以使事情变得更容易):


public static void main(String[] args) throws InterruptedException, ExecutionException {

        ListenableFuture<String> future = getString();

        ListenableFuture<String> future2 = Futures.transform(future, new Function<String,String>() {

            @Override

            public String apply(String input) {

                return input.toUpperCase();

            }


        });

        System.out.println(future.get());  //print "hello"

        System.out.println(future2.get());  //blocking, never ends...no result

    }



    private static ListenableFuture<String> getString() {

        return new ListenableFuture<String>() {


            @Override

            public String get() throws InterruptedException, ExecutionException {

                return "hello";

            }


        };

    }


30秒到达战场
浏览 118回答 1
1回答

HUX布斯

这可能表示您为简化操作而删除的那些“ListenableFuture 实现中的其他方法”中的错误。与其实施您自己的ListenableFuture,不如使用Futures.immediateFuture("hello")来获得正确的实施。
随时随地看视频慕课网APP

相关分类

Java
我要回答