- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 LinkedList
并使用 list.iterator()
检索 Iterator
对象。之后,我检查 it.hasNext()
,真正的问题是在检查 it.hasNext()
时,有时它返回 false
。尽管列表中有元素,但我需要帮助为什么会发生这种情况。
一些代码:
public synchronized void check(Object obj) throws Exception {
Iterator itr = list.iterator();
while(itr.hasNext()) { //This Line I get false.. though i have list size is 1
Item p = (Item)itr.next();
if(p.getId() == null) {continue;}
if(p.getId().getElemntId() == obj.getId() || obj.getId() == 0 ) {
p.setResponse(obj);
notifyAll();
return;
}
}
Log.Error("validate failed obj.getId="+obj.getId()+" **list.size="+list.size()*This shows 1*);
throw new Exception("InvalidData");
}
最佳答案
...好吧,一旦到达列表末尾,hasNext() 将返回 false。请发布您的代码看看出了什么问题。要么您的列表中没有预期的元素,要么您调用 next() 的频率比您预期的要高。
编辑:事实上,由于它是多线程的,Nishant 说得对,请使用以下方法检查您的列表是否是线程安全的:
List list = Collections.synchronizedList(new LinkedList(...));
编辑2:
也许有两个线程正在同时访问该列表。如果错误有时发生,有时不发生,则可能是这种情况。
如果你有这样一段代码在多个线程中运行:
if (it.hasNext())
T elem = it.next()
process(elem)
可能是这样的:线程 1 和 2 说“好的,有下一个元素”,然后切换上下文,然后两者都在某个时间再次运行,并且都想检索一个元素,尽管只有一个元素可用。
要解决此问题,请使您的方法“同步”
synchronized void processItem(Iterator<T> it)
{
if (it.hasNext())
T elem = it.next()
process(elem)
}
关于Java LinkedList 迭代器过早耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553413/
我的测试代码: int SIZE = 1900; int[][] array = new int[SIZE][]; for (int i = 0; i < SIZE; i++) { array[i
我有一堆 WAV 文件和一个将它们复制到另一个目录的脚本,但使用 SoX 处理了一些文件。输出的文件都应该有 1 个 channel ,采样率不超过 44.1khz。我的大多数文件要么有一个以上的 c
我正在运行一个相当占用内存的 Python 脚本,但似乎我的机器正在提前终止进程。我安装了 16GB(并通过 lshw -class memory 确认),但我的进程似乎在使用量达到 4GB 左右时被
我很难确定在使用 .NET 的 HttpWebRequest 类调用远程服务器(特别是 REST Web 服务)时是否有办法处理潜在的连接问题。根据我的调查,WebClient 类的行为是相同的,这在
所以我有这个网址: http://test.com/afolder/who-else-wants-to-make-horror-movies%3f/ 这是 URL 编码版本: http://test.
我是一名优秀的程序员,十分优秀!