我有一个观察循环,非常简单:
BlockingQueue<Object> q = new ArrayBlockingQueue(LENGTH);
while (true) {
Object o = null;
int spins = 0;
// SPINNING LOOP
while (spins++ < 1000)
// Poll queue q, check if o is still null
if (o == null)
// Await for condition to be signaled
// Inspect Object o
}
我发现的是:如果旋转计数增加,您可以更快地将项目插入队列,但物品不能快速取出。但是,如果降低,则以插入速度为代价更快地取出物品。我发现这是通过测量插入的添加方法,以及测量插入和检查外出时间之间的时间。
因此,在上面的示例中,您可以快速插入项目,但对象的检查速度会更慢。
是否有可能的解释?