gpt4 book ai didi

java - 为什么在交互中的同步集合中再次同步?

转载 作者:行者123 更新时间:2023-11-30 05:49:47 24 4
gpt4 key购买 nike

在 Java 文档中它说同步集合必须在迭代中再次手动同步。这是为什么?由于返回的集合已经同步。不太明白为什么会这样。谢谢。

 Collection c = Collections.synchronizedCollection(myCollection);
...
synchronized(c) {
Iterator i = c.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}

最佳答案

原因是迭代操作无法保持列表上的锁。例如,i.hasNext() 会在检查 hasNext() 时锁定列表,但之后列表可能会再次更改/em> 在您实际调用 next() 之前。

因此,您必须自己锁定列表,以保持整个迭代同步,而不仅仅是每个操作单独进行。

关于java - 为什么在交互中的同步集合中再次同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14915656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com