package org.keycloak.testsuite.performance; import static org.keycloak.testsuite.util.WaitUtils.pause; /** * * @author tkyjovsk */ public abstract class LoopingRunnable implements Runnable { private long sleepBetweenLoopsMillis; private long loopCounter; public LoopingRunnable() { this(0); this.loopCounter = 0; } public LoopingRunnable(long sleepBetweenLoopsMillis) { this.sleepBetweenLoopsMillis = sleepBetweenLoopsMillis; } public void setSleepBetweenLoopsMillis(long sleepBetweenLoopsMillis) { this.sleepBetweenLoopsMillis = sleepBetweenLoopsMillis; } public long getLoopCounter() { return loopCounter; } @Override public void run() { while (!Thread.interrupted()) { loop(); loopCounter++; pause(sleepBetweenLoopsMillis); } } public abstract void loop(); }