ALinkedList
有方便peek
的 , pop
, ... 方法。
不幸的是,我需要一个线程安全的LinkedList
. 因此,我的第一个想法是将其包装如下:
List<Object> list = Collections.synchronizedList(new LinkedList<>());
但是,由于List
接口不包含peek
orpop
方法。这当然行不通。
或者,我可以synchronized(list)
在整个代码中使用块。这是要走的路吗?
我忽略了任何解决方案?
编辑:
使用LinkedList
. 我看到有些人正在提议其他系列。所以,这里遵循简短的要求,这导致我决定使用LinkedList
.
更多背景信息:
- 我使用的是 LinkedList,因为需要订购这些物品。
- 项目应该以非阻塞方式添加。
- 项目在后面添加;从前面移除。
- 在删除第一项之前,首先需要对其进行
peek
编辑和验证。如果验证失败,则该项目需要保留在列表中。 - 仅当验证成功完成时,才会删除第一项。
- 队列需要有一个最大大小(以避免内存问题)。