【发布时间】:2017-01-12 18:36:41
【问题描述】:
考虑到:
Collections.synchronizedMap(new LinkedHashMap<>());- 主循环
Thread- 在上面的地图上执行计划任务(来自阻塞队列)。
- 任务基本上可以是您可以使用 map 执行的任何操作(还可以迭代和更新内部的值)。
- 在上面的地图上执行计划任务(来自阻塞队列)。
- 多个循环“迷你”线程
- 这需要不时查找地图的当前元素(仅迭代,无版本)。
现在 - current 是这里的关键字 - 我需要直接流动 - 不能使用快照。
根据文档:(但我不确定我能做什么)
当迭代任何集合视图时,用户必须在返回的地图上手动同步。
我真正需要的是每当地图被主线程修改或迭代时,没有一个“迷你”线程可以访问它(锁定)。
同时,当主线程不接触所述地图时 - 所有“迷你”线程都可以访问他们喜欢的地图(但他们不会以任何方式修改它 - 只是迭代/读取)。
但是现在 - 当主线程想要修改 map 而“mini”s 正在迭代它时会发生什么?
这是否意味着我需要尽可能将地图放在同步块中?
ReadWriteLock 在这里有帮助吗?请记住,查找“迷你”线程不能是快照。
【问题讨论】:
标签: java synchronized