Java 等待某事发生的队列
我想实现队列,它等待共享资源。当此资源空闲时,队列获取第一个添加的元素并更改此资源中的信息。但如果没有,就等着吧。并发库中是否有可以执行此操作的队列?或者我需要写我自己的队列?还是有更好的方法?Java 等待某事发生的队列,java,multithreading,concurrency,Java,Multithreading,Concurrency,我想实现队列,它等待共享资源。当此资源空闲时,队列获取第一个添加的元素并更改此资源中的信息。但如果没有,就等着吧。并发库中是否有可以执行此操作的队列?或者我需要写我自己的队列?还是有更好的方法? 谢谢你的帮助)听起来你想要两样东西 要在资源上执行的任务队列的BlockingQueue实例(例如ArrayBlockingQueue) 资源的锁,供线程等待,直到资源可用 然后,线程可以从队列中取出一个项目并等待资源锁,或者等待资源锁,然后在持有该锁的同时尝试从队列中取出一个项目 等待并首先从队列中取
谢谢你的帮助)听起来你想要两样东西
BlockingQueue
实例(例如ArrayBlockingQueue
)poll()
(而不是take()
)并在队列为空时释放资源锁(如果您不想保留它)
例如
从队列轮询
是你的朋友。A可能是
封锁队列
的有用替代品,这取决于生产者和消费者的实际行动。封锁队列提供了解决第2点的方法。@Luigimendoza我知道take
方法,特别是因为它是拥有封锁队列
的主要原因,但问题的措辞似乎表明,还有另一个资源(与队列分开)需要等待(例如,网络连接或其他类似的资源)。我可能错了,这个问题的措辞不是特别好,但这是我的假设,也是我的答案的基础。例如,需要发送到网络连接的项目队列,其他线程也可能正在使用这些项目。哦,对不起。。你说得对,我需要更具体地描述一下情况。有不同的应用程序和一个共享资源。每个应用程序都可以更改资源中的信息。我的任务是:我需要实现另一个应用程序,它读取和写入(更改)资源。所有信息都在运行时更改,我需要将其存储在队列中。当资源空闲时,我的应用程序从队列中获取信息并更改资源中的信息。