Java POJO属性更改侦听器-理想方式

Java POJO属性更改侦听器-理想方式,java,while-loop,javabeans,Java,While Loop,Javabeans,我正在开发一个基于REST的web应用程序,它将异步调用第三个系统来获取一些数据(使用WebSocket)。所以 浏览器->休息->我的网络应用->另一个应用->我的网络应用->浏览器 我的Web应用程序与另一个应用程序之间的通信是异步的,我只能使用一些标识符跟踪请求的响应。 因此,我请求C作为.C,响应将是.response,其中两个计数器将相同 为了将响应映射到请求,我将命令、计数器、标志设置为bean。我保持一个while循环,不断检查标志是否已设置。一旦我得到响应,服务器就会设置标志,而

我正在开发一个基于REST的web应用程序,它将异步调用第三个系统来获取一些数据(使用WebSocket)。所以 浏览器->休息->我的网络应用->另一个应用->我的网络应用->浏览器 我的Web应用程序与另一个应用程序之间的通信是异步的,我只能使用一些标识符跟踪请求的响应。 因此,我请求C作为
.C
,响应将是
.response
,其中两个计数器将相同

为了将响应映射到请求,我将命令、计数器、标志设置为bean。我保持一个while循环,不断检查标志是否已设置。一旦我得到响应,服务器就会设置标志,而循环退出,我知道数据可用

这条路对吗?我觉得(我可能错了!)保持一个打开的while循环是不正确的,所以有没有办法让它变得更好

类bean的设置如下所示

public void setAllProperties(){
 bean.setCommand(commandString);
 bean.setCounter(counter);
 bean.hasResponse(false);
}
webservice中的代码片段是

bean.setAllProperties();
sendToApplication(bean);
int checkCounter = 0;
while(!bean.hasResponse && checkCounter > 0){
  if(bean.hasResponse){
     checkCounter++;
     // loggers and other logic here
  }
}

循环破坏了异步操作的许多值。它也会消耗大量的CPU时间(当使用这样的循环时,尝试添加延迟-快速睡眠)

我建议改为使用“wait()”和“notify()”/“notifyAll()”

在等待响应的代码中,执行以下操作:

synchronized ( bean ) {
    while ( ! bean.hasResponse ) {
        bean.wait();
    }
}
在处理响应和更新bean的代码中:

synchronized ( bean ) {
    bean.hasResponse = true;
    bean.notifyAll();
}

“其他应用程序”如何更新您的bean类?它不是更新bean类,而是返回响应。使用WebSocketThis效果很好,我在其中添加了一个超时,以确保没有线程无限期地等待。谢谢很抱歉反应太晚。