[英]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.