我以这种方式创建了一个可运行文件:
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();
}
}
}
}
};
如您所见,我在一个同步块中检查我的堆栈(_animationScriptStack
创建为 a LinkedList<Class<?>> _animationScriptStack
)不为空,如果不是,我删除第一个元素。但是,有时,我有一个java.util.NoSuchElementException
, 在removeFirst()
通话中。
有人可以解释我为什么吗?