所以我要弄清楚如何让对象跟踪它们在执行程序服务的每次迭代中获取了多少钻石
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
实例(sneezy
、dopey
)都有自己的锁/互斥锁/监视器,因此可以同步
run
方法上的 不会同步任何内容,因为每个方法都使用不同的“锁”。
我认为如果您为 Mine
和 Dwarf
提供单独的类,会更容易理解。如果您在 Mine
上有一个 extractDiamonds
方法,您可以在该方法上添加 synchronized
并实现您想要的效果。这是假设您将创建一个 Mine
对象实例,并以某种方式将其传递给您创建的每个 Dwarf
实例...或类似的东西。
关于java - java并发编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081996/