Groovy BlockingQueue.poll“的;没有方法签名:java.util.ArrayList.poll“;
我试图在Groovy中使用Groovy BlockingQueue.poll“的;没有方法签名:java.util.ArrayList.poll“;,java,groovy,Java,Groovy,我试图在Groovy中使用BlockingQueueJava类,根据文章,您可以使用轮询超时的元素 我遇到的问题是这个错误被排除了。 下面是groovy脚本: import java.util.concurrent.TimeUnit import java.util.concurrent.BlockingQueue bq=[1, 2, 3] as BlockingQueue bq.poll(1, TimeUnit.SECONDS) 获取以下错误: ERROR groovy.lang.Miss
BlockingQueue
Java类,根据文章,您可以使用轮询超时的元素
我遇到的问题是这个错误被排除了。
下面是groovy脚本:
import java.util.concurrent.TimeUnit
import java.util.concurrent.BlockingQueue
bq=[1, 2, 3] as BlockingQueue
bq.poll(1, TimeUnit.SECONDS)
获取以下错误:
ERROR groovy.lang.MissingMethodException:
No signature of method: java.util.ArrayList.poll() is applicable for argument types: (Long, java.util.concurrent.TimeUnit$4) values: [1, SECONDS]
Possible solutions: pop(), tail(), tail(), sort(), clone(), wait()
在Groovy中使用Java中的BlockingQueue.poll
函数的正确方法是什么?问题已在讨论中描述
作为一种解决方法,您可以使用如下Cometing:
def bq = new ArrayBlockingQueue<>(10, false, [1, 2, 3])
bq.poll(1, TimeUnit.SECONDS)
但是具体的实现应该根据您的需要来选择。这两者之间的主要区别在于LinkedBlockingQueue
是基于链表实现的,而ArrayBlockingQueue
是基于数组实现的。另外,LinkedBlockingQueue
是可选的有界队列,ArrayBlockingQueue
总是有界的。谢谢ArrayBlockingQueue
工作起来很有魅力。我对你的答案投了赞成票,但无法将其标记为接受,因为该问题被标记为重复。
def bq = new LinkedBlockingQueue([1, 2, 3])
bq.poll(1, TimeUnit.SECONDS)