gpt4 book ai didi

java - 非空列表上的 NoSuchElementException

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:13 24 4
gpt4 key购买 nike

我有一个以这种方式创建的可运行程序:

private Runnable _animationScriptRunnable = new Runnable() {
public void run() {
synchronized (AnimationManager.this) {
while (!_stopRunning && !_animationScriptStack.isEmpty()) {
Class key = _animationScriptStack.removeFirst();
if (isAnimationExist(key) && isAnimationActivated(key)) {
AAnimation animation = _animationsClassTable.get(key);
animation.doBeforeAnimation();
animation.onAnimationBeginning();
do {
animation.onAnimation();
} while (isAnimationActivated(key) && animation.isAnimationRecurent() && !_stopRunning);
animation.onAnimationEnding();
animation.doAfterAnimation();
}
}
}
}
};

如您所见,我在同步块(synchronized block)中检查我的堆栈( _animationScriptStack ,创建为 LinkedList<Class<?>> _animationScriptStack )不为空,如果不为空,我将删除第一个元素。但是,有时,我有一个 java.util.NoSuchElementException ,在removeFirst()上打电话。

有人可以解释一下为什么吗?

最佳答案

LinkedList不是线程安全的,这可能会导致代码出现意外结果。

您需要使用ConcurrentLinkedQueue在这种情况下,当您尝试访问线程中的列表时。请看一下,我想这就是您所需要的。

关于java - 非空列表上的 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341779/

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