对于功能:
invokeAll()
它使用包含将要处理的项的映射/集,我希望按自定义顺序处理每个项,即与键顺序相同。 在文档中:
键的条目处理顺序未定义。实现可以选择以任意顺序处理条目,包括同时处理。此外,不保证实现将使用相同的EntryProcessor实例来处理每个条目,具体情况可能是在非本地缓存拓扑中。
对于此行:
实现可以选择以任意顺序处理条目,包括同时处理
我不知道怎么做,有什么例子吗? 如果我使用treemap/treeset保存带顺序的键,那么条目在treemap/treeset中的处理方式是否与其键顺序相同?
顺便说一句,由于invoke有一个内部锁,invokeAll是否还将持有map/set中所有键的锁,直到EntryProcessor完成?
实际上,您所指的文档是从 javax.cache.Cache::invokeAll . "实施”在这里指的不是 EntryProcessor 但是JSR166的实现(aka jcache,aka javax.cache 包)然后点燃 IgniteCache .
javax.cache.Cache::invokeAll
EntryProcessor
javax.cache
IgniteCache
本文件的意思是 javax.cache.Cache 接口允许其实现调用 入口处理器 任何顺序。点火选择不给它任何额外的细节,并且没有办法影响这里的秩序。
javax.cache.Cache
入口处理器
另外,记住点火是分布的,所以在 invokeAll 本质上是并发的。如果您需要严格的顺序,最好迭代键并使用 invoke 在每把钥匙上。
invokeAll
invoke