gpt4 book ai didi

java - 如何实现可以使用 Java 安全递增的多线程变量?

转载 作者:行者123 更新时间:2023-12-02 13:25:13 26 4
gpt4 key购买 nike

在我的程序中,我有一个线程将供应变量递增 2,然后另一个线程从供应类中获取随机数量的供应。电源类别最多只能存储 5 个值,并且由于 sleep 和电源请求是随机的,因此电源计数可能会增加到超过其最大限制。

我试图确保它不会超过该限制。

有更好的方法吗?

(伪代码)

  1. 供应量增加 2
  2. 如果供应量大于 max,则将供应量分配给 max

这是代码:

private int MAX = 5;
private int supply = 0;
public void run()
{
while(true) {
supply = supply + 2;
if(supply > MAX)
supply = MAX;
}
}

最佳答案

您可以使用公共(public)同步 incSupply() 方法来增加供应变量:

public synchronized void incSupply()
{
// Code borrowed from Jean-Bernard Pellerin.
int temp = supply + 2;
if (temp > MAX)
temp = MAX;
supply = temp;
}

请注意,您还需要对从“supply”变量读取/写入“supply”变量的其他方法使用同步。

关于java - 如何实现可以使用 Java 安全递增的多线程变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310377/

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