假设我有四个类:Party、Creature、Job、Item。
派对有生物
派对有物品
生物有工作(线程)
工作需要物品
我无法确定如何同步各个项目,这样没有作业可以同时访问一个项目。我以表格形式汇总了聚会中所有可用物品的清单
ArrayList<ItemInstance>
其中 ItemInstance 有一个 Item 和一个表示数量的整数。我不知道如何执行此列表上的锁定
ReentrantLock resourceLock = new ReentrantLock();
ArrayList<Condition> resourceConditions = new ArrayList<Condition>();
我想过这样做,但是锁定 resourceLock 会锁定所有项目,对吗?此外,我需要锁定特定数量的项目。所以我的数组条目可能是
(Swords, 4)
在我的主列表中,但我的工作可能只需要使用 3 把剑。我应该将它们全部存储在一个列中并删除数量吗?
一般的概念是我有一个包含所有项目和数量的大型派对清单,然后我有很多工作,其中包含所需的项目和数量的小清单。我试图让我的作业线程等待足够的每个项目,执行,然后释放要重用的项目。
PartyList =
(Swords, 7)
(Forks, 2)
(Bottles, 5)
JobEatList =
(Forks, 1)
//RUN THREAD
PartyList =
(Swords, 7)
(Forks, 1)
(Bottles, 5)
JobDineList =
(Bottles, 2)
(Forks, 4)
//WAIT