【发布时间】:2016-03-21 21:40:48
【问题描述】:
我使用的 API 调用结果,但不返回结果本身。一旦进行调用,就会调用一个单独的方法(侦听器),其中包含结果。这是我想要实现的一个示例:
public static void main (String[] args) {
Object obj = someMethod();
System.out.println("The object is" + obj + ", wooh!");
}
public void callObject() {
// This is the call that sends a request for the object
}
public void receiveObject(Object object) {
// This is the API method that is invoked with the result (cannot be changed)
}
// What I want to be able to do
public Object someMethod() {
callObject();
// return received object once received, but how?
}
callObject() 不返回对象,仅启动对它的检索。我想要一个调用对象的方法,然后在收到它时返回它。我一直在研究 Callables 和 Future 结果,但我不确定如何实现它们。
有什么想法吗?谢谢!
【问题讨论】:
-
你的问题不清楚。
-
这应该是非阻塞的吗?一种常见的解决方案是将callback 对象传递给
callObject方法。 -
@Perdomoff 我将进行编辑,请耐心等待。
-
@ElliottFrisch 在其他任务应该能够同时运行(单独的线程)的意义上它是非阻塞的,但是可以在等待结果时对结果进行引用(例如System.out.println)
-
为了返回由
callObject()获取的Object,callObject()自然也需要返回Object。那么someMethod()可以简单地使用return callObject();,除非您需要先执行其他操作。
标签: java concurrency future callable futuretask