38 lines
916 B
Java
38 lines
916 B
Java
package com.flaremicro.flaretv.visualforecast;
|
|
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ScheduledExecutorService;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import com.flaremicro.flaretv.visualforecast.interfaces.Tickable;
|
|
|
|
public class Executor {
|
|
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
|
|
|
private final Tickable tickable;
|
|
private final long sleepNanos;
|
|
|
|
//private long nextTick = 0;
|
|
|
|
Executor(Tickable tickable, long sleepNanos) {
|
|
this.tickable = tickable;
|
|
this.sleepNanos = sleepNanos;
|
|
}
|
|
|
|
Executor(Tickable tickable, int ticksPerSecond) {
|
|
this(tickable, (long) ((1 / (double) ticksPerSecond) * 1000000000L));
|
|
}
|
|
|
|
public void end() {
|
|
scheduler.shutdown();
|
|
}
|
|
|
|
public void begin() {
|
|
scheduler.scheduleAtFixedRate(new Runnable() {
|
|
public void run() {
|
|
tickable.tick();
|
|
}
|
|
}, 0, sleepNanos, TimeUnit.NANOSECONDS);
|
|
}
|
|
}
|