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

时间:2016-04-14 03:24:32

标签: java multithreading

我做了很多谷歌,但我找不到如何使用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);

2 个答案:

答案 0 :(得分:0)

我正在使用

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

答案 1 :(得分:0)

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

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

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

改为使用Callable