jer*_*mie 2 java concurrency multithreading garbage-collection
我正在阅读有关WeakHashMap的Java Doc ,我得到了基本概念.由于GC线程在后台运行,您可以获得"异常行为",例如迭代时的ConcurrentModificationException等.
我没有得到的是,如果默认实现没有同步并且不以任何方式包含锁,那么为什么不可能获得不一致的状态.假设你有2个主题.GC线程在某个索引处同时并在同一索引处删除某个键,用户线程在该数组中插入一个键值对.
对我来说,如果没有同步,那么获得不一致的哈希映射的风险很高.
更糟糕的是,做这样的事情实际上可能是非常危险的,因为v实际上可能是空的.
if (map.contains(k)) {
V v = map.get(k)
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |