【发布时间】:2014-07-23 12:10:50
【问题描述】:
编辑: 编辑了问题以响应下面的@maress 答案。
我在 java 中有一个 Web 服务(启用异步),它在调用时会异步执行对另一个服务的调用。在我的控制器中,我有这个:
private boolean receivedEvent = false;
private final Object SYNC = new Object();
public Callable<String> doStuff()
{
callSomeAsyncFunction();
return new Callable<String> ()
{
@Override
public String call() throws Exception {
synchronized (SYNC)
{
while (receivedEvent == false)
{
SYNC.wait();
}
receivedEvent = false;
System.out.println("RETURN");
return "ok";
}
}
};
}
public void onMyEvent(MyEvent event)
{
synchronized (SYNC)
{
receivedEvent = true;
System.out.println("RECEIVED");
SYNC.notify();
}
}
编辑:通知永远不会通过。 System.out.println("RETURN") 永远不会被调用。正在接收事件(显示“已接收”)。
现在我要做的就是等待callSomeAsyncFunction() 完成执行。完成后,它会在处理程序 public void onMyEvent(MyEvent event) 上触发一个事件。
有什么建议吗?我什至不确定我的方法是否有意义。
【问题讨论】:
标签: java multithreading asynchronous wait notify