等到事情发生的队列

时间:2015-10-14 23:16:36

标签: java multithreading concurrency

我想实现队列,等待共享资源。当此资源空闲时,队列将获取第一个添加的元素并更改此资源中的信息。但是当不,只是等待。并发库中是否有任何可以执行此操作的队列?或者我需要编写自己的队列?或者有更好的方法来做到这一点? 谢谢你的帮助)

1 个答案:

答案 0 :(得分:1)

听起来你想要两件事。

  1. 要在资源上执行的任务队列的BlockingQueue实例(例如ArrayBlockingQueue)。

  2. 您的线程在资源可用之前等待的资源锁。

  3. 然后你的线程可以从队列中取出一个项目并等待资源锁定,或者等待资源锁定,然后在持有该锁定时尝试从队列中取出一个项目。

    首先等待并从队列中取出是更容易的设计,但问题中的措辞使得您似乎希望相反并等待资源锁定,然后尝试采取从队列中。该工作流程稍微复杂一点,你应该从队列中poll()(而不是take())并释放你的资源锁如果你不想在队列中保留它是空的。

    E.g。

    1. 等待资源锁定
    2. ...获取资源锁
    3. poll来自队列
    4. 如果队列为空,请释放资源锁。
    5. 如果队列不为空,请处理队列项。
    6. 释放资源锁。
    7. 如果队列为空,请稍微睡一会儿。?
    8. 重复。