Странный код в java.util.concurrent.LinkedBlockingQueue

Все!

Я нашел странный код в LinkedBlockingQueue:

private E dequeue() {
        // assert takeLock.isHeldByCurrentThread();
        Node<E> h = head;
        Node<E> first = h.next;
        h.next = h; // help GC
        head = first;
        E x = first.item;
        first.item = null;
        return x;
}

Кто может объяснить, зачем нам нужна локальная переменная h? Как это может помочь для сборки мусора?

11
задан Vadzim 11 January 2012 в 13:13
поделиться