java - java并发编程问题

标签 java concurrency

所以我要弄清楚如何让对象跟踪它们在执行程序服务的每次迭代中获取了多少钻石

public class DwarfMine {

    public DwarfMine() {
    }

    public int diamonds = 100;

    public int getDiamonds() {
        return diamonds;
    }

    public synchronized int subtractDiamonds(int howMany) {
        diamonds -= howMany;
        System.out.println("There are now " + diamonds + " left in the mine!");
        return diamonds;
    }

}

最佳答案

每个 DwarfMine 实例(sneezydopey)都有自己的锁/互斥锁/监视器,因此可以同步 run 方法上的 不会同步任何内容,因为每个方法都使用不同的“锁”。

我认为如果您为 MineDwarf 提供单独的类,会更容易理解。如果您在 Mine 上有一个 extractDiamonds 方法,您可以在该方法上添加 synchronized 并实现您想要的效果。这是假设您将创建一个 Mine 对象实例,并以某种方式将其传递给您创建的每个 Dwarf 实例...或类似的东西。

关于java - java并发编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081996/

相关文章:

java - 为什么 String.replaceAll (".*", "REPLACEMENT") 在 Java 8 中会出现意外行为?

java - Java中如何读取多种语言的文件?

java - 如果不在类文件中,编译后的代码将存储在哪里

c++ - const 强制转换以允许读取锁定,这闻起来难闻吗?

java - 是否有循环队列的非并发(ArrayBlockingQueue 除外)标准实现?

java - 创建通用方法以适应接口(interface)和通用父类

java - 从浏览器重定向到 Android 应用

java - 查找akka中所有 child Actor 的状态

go - "channel1 <- <-channel2"是做什么的?

java - JRE 如何为具有非有效最终局部变量的 lambda 体创建并发问题?