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