import com.github.rholder.retry.Retryer;
import com.github.rholder.retry.RetryerBuilder;
import com.github.rholder.retry.StopStrategies;
import com.github.rholder.retry.WaitStrategies;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
Callable<Boolean> callable = () -> {
return true;
};
CallableRetryer<Boolean> callableRetryer = new CallableRetryer<>(callable);
Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
.retryIfResult(result -> result == false)
.withWaitStrategy(WaitStrategies.debounce(500, TimeUnit.MILLISECONDS))
.withStopStrategy(StopStrategies.stopAfterAttempt(3))
.build();
try {
Callable<Boolean> debouncedCallable = Debounce.debounce(callableRetryer, retryer);
debouncedCallable.call();
} catch (Exception e) {
e.printStackTrace();
}
}
}