Added providers
This commit is contained in:
51
src/com/flaremicro/visualforecast/TickThread.java
Normal file
51
src/com/flaremicro/visualforecast/TickThread.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package com.flaremicro.visualforecast;
|
||||
|
||||
import java.util.concurrent.locks.LockSupport;
|
||||
|
||||
import com.flaremicro.visualforecast.interfaces.Tickable;
|
||||
|
||||
public class TickThread implements Runnable {
|
||||
private final Tickable tickable;
|
||||
private boolean running = true;
|
||||
private final long sleepNanos;
|
||||
|
||||
//private long nextTick = 0;
|
||||
|
||||
TickThread(Tickable tickable, long sleepNanos) {
|
||||
this.tickable = tickable;
|
||||
this.sleepNanos = sleepNanos;
|
||||
}
|
||||
|
||||
TickThread(Tickable tickable, int ticksPerSecond) {
|
||||
this(tickable, (long) ((1/(double)ticksPerSecond) * 1000000000L));
|
||||
}
|
||||
|
||||
public void end() {
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
long nanosLost = 0;
|
||||
while (running) {
|
||||
/*while(System.nanoTime() < nextTick)
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.sleep(1);
|
||||
}
|
||||
catch (InterruptedException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
nextTick = System.nanoTime() + sleepNanos;
|
||||
tickable.tick();*/
|
||||
tickable.tick();
|
||||
nanosLost -= System.nanoTime();
|
||||
//Unnecessary conditional?
|
||||
//if(sleepNanos+nanosLost > 0)
|
||||
LockSupport.parkNanos(sleepNanos+nanosLost);
|
||||
nanosLost = System.nanoTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user