gpt4 book ai didi

java - LinkedBlockingQueue 第一个元素丢失

转载 作者:行者123 更新时间:2023-12-01 21:24:02 29 4
gpt4 key购买 nike

我使用 LinkedBlockingQueue 为我的应用程序进行隐式同步,但如果我使用 queue.take()queue.poll() ,前几个元素总是以某种方式从队列中获取后丢失。我已经检查过它是否是同一个对象,确实如此。

这是我的代码:

for ( QueryResult result : tmpPage ) {
String objectId = result.getPropertyValueByQueryName( "cmis:objectId" );
writer.writeFile(objectId ); //Only for debugging reasons to
//compare the input and the output
try {
batchJobs.offer( new Node( objectId ), 1,TimeUnit.HOURS);
} catch(Exception e) {
errorLogger.error( e.getMessage() );
}
}

我进行投票或投票的地方

Node node = null;
while ( !nodes.isEmpty() ) {
while((node = nodes.take())!=null ) {
writer.writeFile( node.getObjectID() ); // Only for debugging reasons
if ( node != null ) {
//Do some stuff
}
}
}

有人经历过类似的事情吗?

最佳答案

队列是一种 FIFO(先进先出)数据结构。一旦从队列中取出一个对象,它将不再是该数据结构的一部分。您必须将其放回队列中。

如果您只想查看元素,则需要使用 peek()。

关于java - LinkedBlockingQueue 第一个元素丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590180/

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