假设有3个读线程和1个写线程。 写入线程调用map.clear()。会造成什么异常或影响?
clear
方法将清除整个地图,即删除所有条目。
考虑到并发性,对于 reading 操作,没有任何变化。他们只会读取地图在访问该地图时所具有的值。然而,对于使用 writing 操作的其他线程,
ConcurrentHashMap
会自动等待 clear
操作完成,这样您就不会遇到非同步并发带来的奇怪的影响。
仔细阅读官方文档,它解释了所有效果:ConcurrentHashMap Java-Doc
如果您在没有任何同步的情况下清除并发哈希图,则最终可能会导致应用程序卡住,例如502 代理错误。 当线程写入地图并发生清除时,您会得到一些您不喜欢的东西。
正如其名称所示,它将清除地图。