我正在使用Java 8,并且想知道AngularJS
的{{1}}操作是否确实锁定了整个表/地图,或者只是锁定了包含密钥的bin。
来自type:"E"
方法的documentation:
计算正在进行时,其他线程可能会阻止此地图上的某些尝试更新操作,因此计算应该简短,并且不得尝试更新此地图的任何其他映射
这看起来在为键调用此方法时锁定了整个映射。为什么在更新某个键的值时必须锁定整个地图?仅锁定包含键/值对的bin更好吗?
答案 0 :(得分:1)
根据实施情况判断(Oracle JDK 1.8.0_101),只是锁定了相应的bin。这与您引用的文档片段并不矛盾,因为它提到某些更新操作可能会被阻止,而不是全部。当然,如果文档明确说明了哪些内容被锁定,那就更清楚了,但这会将实现细节泄露给事实上接口的一部分。
答案 1 :(得分:1)