2015-04-22 27 views
0

我目前正在Java中创建一个库模拟器。这个库有多个借用者,它们是线程。 每个借款人线程执行一系列功能,例如(创建借用清单,从图书馆借书,将图书归还图书馆)。在模型类中创建一个借用者数组,每个线程都在for循环内启动。我目前遇到的一个问题是,由借款人运行的功能投入一种输出队列,借此第一借入者输入的第一个功能运行等。将多线程执行的函数放入队列中

我的问题是,有没有办法,而不是在每个借用者线程到达它时执行每个函数,而是将所有线程的函数放入一个输出队列中,它将工作通过?

+0

您可能会看看Java的BlockingQueue实现(如ArrayBlockingQueue),它为您正在讨论的Producer-Consumer模式提供方便的集合实现。 –

+0

您放入队列的对象可以是任何数据对象,策略,lambda函数......问题是什么? –

+0

我试图实现的是,而不是每个线程执行一个接一个,我宁愿他们一个接一个执行某个功能。一个例子是“向图书馆索要一套书”。 –

回答

0

我使用BlockingDequeLink,先进先出)修正了类似的问题。 消费者线程从deque中弹出第一个Task并对其进行处理。完成后,他会报告并执行下一个任务等。 其他线程 - 在你的案例中借用者 - 只需将任务放入最后一个位置的deque即可。

希望这会有所帮助!