我LinkedList
在 Java 中使用 a 并将其定义为:
private final Queue<Collection<String>> data = new LinkedList<Collection<String>>();
当我尝试访问它时会出现问题,如下代码所示:
synchronized (data) {
if (data.isEmpty())
{
return;
}
data.remove();
}
这在大多数情况下都很有效。但是在一些罕见的未知情况下,它会抛出异常
java.util.NoSuchElementException
异常被抛出
data.remove();
根据我的理解,如果在空队列上尝试删除,则会引发上述异常。isEmpty()
但是我在尝试之前已经进行了检查remove()
。那为什么会抛出这样的异常呢?我已经看过许多关于此的类似帖子,但无法得到令人信服的答案。由于我已经synchronized
在队列中,我只是不明白其中的原因。
任何帮助深表感谢。