旋转会产生奇怪的效果

时间:2015-01-02 04:00:07

标签: java multithreading

我有一个观察循环,非常简单:

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
}

我发现的是:如果旋转计数增加,您可以更快地将项目插入队列,但物品不能快速取出。但是,如果降低,则以插入速度为代价更快地取出物品。我发现这是通过测量插入的添加方法,以及测量插入和检查外出时间之间的时间。

因此,在上面的示例中,您可以快速插入项目,但对象的检查速度会更慢。

是否有可能的解释?

0 个答案:

没有答案