我在Java中使用LinkedList
并将其定义为:
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
,我只是不明白这个原因。
非常感谢任何帮助。