gpt4 book ai didi

java - POJO Property change listener - 理想方式

转载 作者:行者123 更新时间:2023-11-29 05:15:48 28 4
gpt4 key购买 nike

我正在开发一个基于 REST 的 Web 应用程序,它将为某些数据异步调用第三个系统(使用 websockets)。所以浏览器 -> REST -> 我的 WebApp -> 另一个应用程序 -> 我的 WebApp -> 浏览器我的 WebApp 与另一个应用程序之间的通信是异步的,我只能使用一些标识符来跟踪请求的响应。所以,我请求 C 作为 <counter>.C响应将是 <counter>.Response两个计数器都相同。

为了将响应映射到请求,我将命令、计数器、标志设置为一个 bean。我保留了一个 while 循环,它不断检查标志是否已设置。收到响应后,设置标志,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
}
}

最佳答案

循环破坏了异步操作的很多值(value)。它还会消耗大量 CPU 时间(在使用此类循环时尝试添加延迟 - 快速 hibernate )。

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

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

synchronized ( bean ) {
while ( ! bean.hasResponse ) {
bean.wait();
}
}

在处理响应和更新 bean 的代码中:

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

关于java - POJO Property change listener - 理想方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26600652/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com