所以我要弄清楚如何让对象跟踪执行者服务的每次迭代他们花了多少钻石
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;
}
}
答案 0 :(得分:2)
每个DwarfMine
实例(sneezy
,dopey
)都有自己的锁/互斥锁/监视器,因此synchronized
方法上的run
不会同步任何事情,因为每种方法都使用不同的“锁定”。
我认为如果你有Mine
和Dwarf
的单独课程会更容易理解。如果您在extractDiamonds
上使用Mine
方法,则可以将synchronized
放在该方法上并实现您想要的效果。这假设您将创建一个Mine
对象实例,并以某种方式将其传递给您创建的每个Dwarf
实例......或类似的东西。