因此,我想弄清楚如何获得对象,以跟踪它们每次执行程序服务的迭代过程中取了多少颗钻石。
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;
}
}发布于 2016-12-11 01:48:01
每个DwarfMine实例(sneezy,dopey)都有自己的锁/互斥/监视器,因此在run方法上放置synchronized不会同步任何东西,因为每个方法都使用不同的“锁”。
我认为,如果您为Mine和Dwarf有单独的类,将更容易理解。如果您在extractDiamonds上有一个Mine方法,您可以将synchronized放在该方法上,并实现您想要的结果。这是假设您要创建一个Mine对象实例,并以某种方式将其传递给您创建的每个Dwarf实例.或者类似的东西。
https://stackoverflow.com/questions/41081996
复制相似问题