Jac*_*ine 3 java queue concurrency multithreading
我需要一个可以由多个读者处理的队列.
读者将一个元素出列并将其发送到REST服务.
重要的是要注意:
我有什么选择?
ConcurrentLinkedQueue或LinkedBlockingQueue是两个立即想到的选项,具体取决于您是否需要阻止行为.
正如Adamski所说,在等待数据到达时,该take()方法LinkedBlockingQueue不会不必要地烧掉cpu周期.
我不确定你的问题描述是否需要以严格的循环方式将元素出列.假设这不是一种限制可以使用BlockingQueue的take()方法,这将导致线程阻塞,直到数据是可用的(因此不消耗CPU周期).
还要注意take()实现是原子的(例如LinkedBlockingQueue):如果多个线程被阻塞take()并且单个元素被排队,则只返回一个线程的take()调用; 另一个将被阻止.