我想实现队列,等待共享资源。当此资源空闲时,队列将获取第一个添加的元素并更改此资源中的信息。但是当不,只是等待。并发库中是否有任何可以执行此操作的队列?或者我需要编写自己的队列?或者有更好的方法来做到这一点? 谢谢你的帮助)
答案 0 :(得分:1)
听起来你想要两件事。
要在资源上执行的任务队列的BlockingQueue
实例(例如ArrayBlockingQueue
)。
您的线程在资源可用之前等待的资源锁。
然后你的线程可以从队列中取出一个项目并等待资源锁定,或者等待资源锁定,然后在持有该锁定时尝试从队列中取出一个项目。
首先等待并从队列中取出是更容易的设计,但问题中的措辞使得您似乎希望相反并等待资源锁定,然后尝试采取从队列中。该工作流程稍微复杂一点,你应该从队列中poll()
(而不是take()
)并释放你的资源锁如果你不想在队列中保留它是空的。
E.g。
poll
来自队列