繁体   English   中英

如何使用FutureTask从Runnable接口返回值

[英]How to return value from Runnable Interface using FutureTask

我做了很多谷歌,但我找不到如何使用FutureTask从Runnable接口返回值。

我需要使用FutureTask返回run方法的结果,我知道同样可以使用Callable Interface归档,但是如何使用Runnable Interface来完成。

FutureTask构造函数接受返回值的第二个参数。

    public FutureTask(Runnable runnable,V result)

如何将run()方法的结果赋给V结果。

    FutureTask<String> futureTask=new FutureTask<String>(new Runnable() {           
        @Override
        public void run() {
            String outcome="Task Completed Successfully";
        }
    },null);

我在用

ExecutorService exec = Executors.newSingleThreadExecutor(new ThreadFactory() {
    public Thread newThread(Runnable r) {
        Thread t = new Thread(r);
        t.setDaemon(true);
        return t;
    }
});
Future fs = exec.submit(new Callable() {
    public Object call() throws Exception {
        return null;//yourObject
    }
});
fs.get();//your object

调用中的null值是返回值。 要让它返回"Task Completed Successfully" ,您需要:

FutureTask<String> futureTask=new FutureTask<String>(new Runnable() {           
    @Override
    public void run() {
    }
}, "Task Completed Successfully");

但是,如果您希望Runnable计算结果,这显然不是很有用。

请改用Callable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM