首页 > 编程知识 正文

java中死锁的原因,java中出现死锁的原因

时间:2023-05-06 11:16:26 阅读:186539 作者:663

首先,你应该知道(

根据JLS,以下增强的for循环:

字符串列表(for ) {

//Do something with s

}

来定义自定义外观。

迭代器it=list .迭代器(for ); it.hasNext (; () )。

String s=it.next (;

//Do something with s

}

如果您查看AbstractList中迭代器的实现,将会看到以下内容:

hasNext () )不检查并发修改,而是只使用大小检查是否位于列表末尾。

公共布尔主机(

返回当前!=size (;

}

next ) )首先调用checkForComodification ) )以查看在迭代过程中列表是否已更改。

公共下一个() {

检查修改;

try {

enext=get(cursor );

lastRet=cursor;

返回下一步;

} catch (indexoutofboundsexceptione ) )。

检查修改;

throw new NoSuchElementException (;

}

}

finalvoidcheckforcomodification (

if (模式计数!=expectedModCount )

thrownewconcurrentmodificationexception (;

}

因此,如果重复删除列表的倒数第二个元素,则以下指令将调用hasNext ) ),而不调用该元素将减少列表的大小(next ) ),迭代将停止并抛出异常,因此返回false

顺便说一下,这些都只是实现的细节。 因为可以变更,所以不应该依赖那个。 此外,在迭代期间使用it.remove ) )从列表中删除元素。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。