/** * {@inheritDoc} */ @Override public boolean process(IBufferElement<E> elementToProcess, IBufferElement<E> lastProcessedElement) { // only thread that execute compare and set successfully can perform changes if (lastProcessed.compareAndSet(lastProcessedElement, elementToProcess)) { // perform analysis elementToProcess.calculateAndSetBufferElementSize(atomicBuffer.objectSizes); elementToProcess.setBufferElementState(BufferElementState.ANALYZED); atomicBuffer.addToCurrentSize(elementToProcess.getBufferElementSize(), true); atomicBuffer.elementsAnalyzed.incrementAndGet(); return true; } return false; }
elementToProcess.setBufferElementState(BufferElementState.INDEXED);
newLastElement.setBufferElementState(BufferElementState.EVICTED); elementsInFragment++; newLastElement = newLastElement.getNextElement();