gpt4 book ai didi

Java 同步来自 JavaScript 的异步调用

转载 作者:行者123 更新时间:2023-11-30 06:34:30 25 4
gpt4 key购买 nike

我有很多来自客户端的异步 GET 调用和一个 POST 请求。在我的 servlet 收到 POST 请求后,我想以其他方式处理即将到来的 GET 调用。这是我尝试过但失败的方法:

public class MyServlet {

private static volatile proceed = true;

public void doGet(req, resp) {
...
doGetAnswer(req, resp);
...
}

public void doPost(req, resp) {
...
doPostAnswer(req, resp);
...
}

public String doGetAnswer(req, resp) {
if (proceed)
return "Answer GET request";
else
return "Do NOT answer GET request";
}

public String doPostAnswer(req, resp) {
proceed = false;
return "POST called, stopping GET requests";
}
}

我的问题是通过 GET 调用运行的线程无法识别 volatile 变量的更改。

最佳答案

非常不常见的设计...

无论如何,当您并发读/写原始类型变量时,您可能需要使用 Atomic* 数据类型。

AtomicBoolean 应该可以解决问题:

AtomicBooleanproceed = new AtomicBoolean(true) 替换 parameproce = true

if (proceed) 替换为 if (proceed.get())

proceed = false; 替换为 proceed.set(false)

关于Java 同步来自 JavaScript 的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436027/

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