Вы можете написать все oop, как я упоминал ранее, с каким-то контролем скорости (например, через Thread.sleep как самый элементарный). Вы также можете попробовать использовать аннотацию @Scheduled.
Вот пример метода, который будет вызываться 100 раз в секунду
@Scheduled(fixedRate = 10)
public void dequeue() {
//queue.poll(..)
}