
com.jpattern.batch.execution.SleepingIntervalJobExecutionStrategy Maven / Gradle / Ivy
package com.jpattern.batch.execution;
import java.util.Date;
import com.jpattern.batch.JobExecutionStrategy;
/**
*
* Execute a job an infinite number of times with a prefixed sleep time between each execution
*
* @author Francesco Cina'
*
* 09/giu/2010
*/
public class SleepingIntervalJobExecutionStrategy implements JobExecutionStrategy {
private static final long serialVersionUID = 1L;
private final long interval;
private long lastTimeStamp;
private boolean executed = false;
private boolean returned = false;
public SleepingIntervalJobExecutionStrategy( long sleepMilliseconds ) {
interval = sleepMilliseconds;
}
@Override
public boolean canExecute() {
if ( !executed ) {
executed = true;
returned = true;
// System.out.println("not executed");
return returned;
}
if ( returned == false ) {
final long now = new Date().getTime();
// System.out.println("now = " + now);
// System.out.println("lastTimeStamp + interval = " + (lastTimeStamp + interval));
if ( now >= (lastTimeStamp + interval)) {
returned = true;
}
}
else {
lastTimeStamp = new Date().getTime();
// System.out.println("lastTimeStamp = " + lastTimeStamp);
returned = false;
}
// System.out.println("returning = " + returned);
return returned;
}
@Override
public String asString() {
return "SleepingIntervalJobExecution repeat every " + interval + " milliseconds";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy