我目前正在Java中创建一个库模拟器。这个库有多个借用者,它们是线程。 每个借款人线程执行一系列功能,例如(创建借阅清单,从图书馆借书,将图书归还图书馆)。在模型类中创建借用者数组,并且每个线程在for循环内启动。我目前在将借用者运行的函数置于一种输出队列中时遇到问题,其中第一个借用者输入的第一个函数运行等。
我的问题是,有没有办法,而不是在每个借用者线程到达它时执行每个函数,将所有线程中的函数放入一个它将完成的输出队列中?
答案 0 :(得分:0)
我使用BlockingDeque
(Link,先进先出)修复了类似的问题。
消费者线程从双端队列中弹出第一个Task
并对其进行处理。完成后,他会报告并执行下一个任务,依此类推。
其他线程 - 在你的情况下借用者 - 只需将任何任务放入最后一个位置的双端队列。
希望这有帮助!