что-то не могу найти среди всего разнообразия java контейнеров нужный для моего извращенного случая.
если вкратце то нужно что-то типа того, хотя достаточно и обычной очереди:
Collections.synchronizedMap(new LinkedHashMap<Integer, Object>()
{
@Override
protected boolean removeEldestEntry(Map.Entry<Integer, Object> eldest)
{
return this.size() > MAX_SIZE;
}
});
но
- записи будет очень много из разных потоков.
- чтения будет мало и читаться будет все целиком, те snapshot, тоже из разных потоков.
- скорость чтения не важна.
- порядок сообщений важен.