long availableSequence = sequenceBarrier.tryWaitFor(nextSequence, 1000);
public void handlingCycle(long processUpToSequence) { while (true) { try { long availableSequence = sequenceBarrier.tryWaitFor(nextSequence, 0); // process batch while (nextSequence <= availableSequence && nextSequence < processUpToSequence) { eventHandler.onEvent(dataProvider.get(nextSequence)); nextSequence++; } // exit if processed all group if (nextSequence == processUpToSequence) { sequence.set(nextSequence - 1); return; } sequence.set(availableSequence); } catch (final TimeoutException e) { // } catch (final Throwable ex) { sequence.set(nextSequence); nextSequence++; } } }
final long availableSequence = sequenceBarrier.tryWaitFor(nextSequence, 5000);