gpt4 book ai didi

具有资源锁定的java模型客户端服务器架构

转载 作者:行者123 更新时间:2023-12-01 11:30:42 26 4
gpt4 key购买 nike

我必须使用 Java(服务器端)开发客户端服务器架构,但我需要一些建议。

情况:

  1. 公开操作 decrementValue 的服务器
  2. 服务器有一个名为 Value = 整数值的变量
  3. 某些客户端可以向服务器发送减量值请求
  4. 服务器,对于每个请求,执行:
    -- 如果 value > 0 value = value - 1 并向客户端回复新的 val

    -- 如果 value = 0 则回答不可能的操作

因此,如果 value = 2 并且有 3 个请求同时到达,则只有 2 个请求可以减少 value。

最好的解决方案是什么?

如果客户端同时向服务器发出某些请求,如何保证对服务器中存储的值的独占访问?

谢谢。

enter image description here

最佳答案

这取决于您所说的最佳解决方案是什么意思。如果您只是希望您的程序在并发环境中正确运行,那么您应该 synchronize同时修改的数据。这将是一种标准(且可读)的方式来启用对共享数据的独占访问。

但是,如果这不是您的问题,而是理论上在 Java 中执行此操作最有效的方法是什么(或者如果这是在极其并发的上下文中调用的),那么我的建议如下:

static final AtomicInteger atomicInteger = new AtomicInteger(initialValue);
...
if (atomicInteger.get() <= 0) {
return "imposibble. value=0";
}
int result = atomicInteger.decrementAndGet();
if (result < 0) {
atomicInteger.incrementAndGet(); // Revert the effect of decrementing
return "imposibble. value=0";
} else {
return "new value=" + result;
}

关于具有资源锁定的java模型客户端服务器架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30422630/

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