使用Java线程模拟传送带

时间:2019-01-07 22:18:22

标签: java multithreading

我已经完成了模拟传送带的任务,我对如何同步传送带感到困惑。

有两个传送带,可以表示为char数组,开头都为空。有两台机器将未处理的元素(例如随机的小写字母)推入第一个数组的第一个单元格(仅当该单元格为空时)。它们不应该相互干扰,因此当我创建代表机器人的两个线程时,放置元素的方法应该同步。同样,在另一个阵列的最后一个单元中,有两台机器将加工过的元素(例如大写字母)从另一条传送带上取下-它们也应该同步。

这些元素由工作人员(线程)处理-第一个数组的每个单元都有一个,因此,每当一个元素到达他时,他都有机会进行处理并将其放回到另一条带上的指定单元中,由他负责(比如说最近的一个,就好像它在工厂一样)。而且,两条皮带都应尽可能移动(如果末端没有等待的元件)-因此它们也是线。

我的问题是-我需要三个实现Runnable接口的类,以便机器,工人和皮带可以是线程,但据我所知,方法只能在一类内同步。我如何确保所有这些都同步,例如,当机器检查位置是否为空但尚未放置元素时,或者当工人检查未处理的元素到达其位置时,皮带不会移动的工作,但他还没有把它拿下来进行处理吗?

0 个答案:

没有答案