我一直在阅读“Effective Java”第 60条,即“支持使用标准异常”。
另一个值得了解的通用异常是 ConcurrentModificationException。如果设计用于单线程或具有外部同步的对象检测到它正在被同时修改,则应引发此异常。
通常,人们CME
在循环时尝试从集合中删除时会遇到这种情况。
但是在这里,我对检测对自我实现的类对象的并发修改的简洁示例感兴趣?
我希望它类似于在内部对象和相关的布尔标志上同步,如果另一个线程遇到该标志为假,则抛出异常。
对于我在来源中发现的简单研究ArrayList
:
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
modCount
但是如何保持背后的原则。我找不到它在哪里被递减。