我正在尝试遍历相同的数据,但只想在必要时加载数据。我还想在多个并发迭代器中重用获取的数据。
是否有一种对象或模式,可以创建一个底层数据,该数据有机会在运行时获取更多数据,但跨多个实例使用相同的获取数据?该列表应能够并发使用。 我目前正在使用Java。
我已经创建了一个迭代器,返回可用的值,如果它耗尽了其缓冲区中的数据,那么它会去查找更多的数据以供返回。不幸的是,这意味着如果有多个对象实例,它将对每个实例处理数据一次。
如果我使用LinkedList,则担心ConcurrentModificationError。
更新:下面的答案确实讨论了实现这一点的有效方法,但我曾经因此产生了很多问题(非标准,使实现者混淆,好处不值得困惑)。虽然我仍然认为这是一个有趣和有价值的途径,但可能会出现问题。与往常一样,在问“如何”做某事之前,您应该先问自己“是否”应该这样做。
是否有一种对象或模式,可以创建一个底层数据,该数据有机会在运行时获取更多数据,但跨多个实例使用相同的获取数据?该列表应能够并发使用。 我目前正在使用Java。
我已经创建了一个迭代器,返回可用的值,如果它耗尽了其缓冲区中的数据,那么它会去查找更多的数据以供返回。不幸的是,这意味着如果有多个对象实例,它将对每个实例处理数据一次。
如果我使用LinkedList,则担心ConcurrentModificationError。
更新:下面的答案确实讨论了实现这一点的有效方法,但我曾经因此产生了很多问题(非标准,使实现者混淆,好处不值得困惑)。虽然我仍然认为这是一个有趣和有价值的途径,但可能会出现问题。与往常一样,在问“如何”做某事之前,您应该先问自己“是否”应该这样做。
MapLoader
的Hazelcast
映射? - vikingsteve