java - Futuretask doesn't work -


i created futuretask in analog way presented in brian goetz's book java concurrency in practice (the code sample can found here, listing 5.12).

the problem task times out if given 10 seconds. task returns true there shouldn't reason happen:

public static void main(string[] args) throws exception {      futuretask<boolean> task = new futuretask<>(new callable<boolean>() {         @override         public boolean call() throws exception {             return true;         }     });      system.out.println(task.get(10, timeunit.seconds)); } 

this code prints:

exception in thread "main" java.util.concurrent.timeoutexception     @ java.util.concurrent.futuretask.get(unknown source)     @ main.main(main.java:19) 

you haven't executed task. there never result available. javadoc states

this class provides base implementation of future, with methods start , cancel a computation, query see if computation complete, , retrieve result of computation. the result can retrieved when computation has completed

submit task executorservice run asynchronously.

executors.newsinglethreadexecutor().submit(task); // ideally shutdown executorservice afterwards 

or run synchronously

task.run(); 

in links you've given, i'm assuming start() method runs futuretask in new thread called before attempting result.


Comments

Popular posts from this blog

c++ - QTextObjectInterface with Qml TextEdit (QQuickTextEdit) -

javascript - angular ng-required radio button not toggling required off in firefox 33, OK in chrome -

xcode - Swift Playground - Files are not readable -