Timed methods

What is the best way to call a method on a sort of schedule? Should I use NanoTimer or just some sort of count in the update loop? Its not going to be a consistent schedule but rather a random time range say between 1 to 5 seconds.

Unless you need it to be fairly exact (to the millisecond), use the update loop. You might at worse be out by 0.0167 seconds (@ 60fps)

Or use any kind of external Timer you wish and pass things back through Application.enqueue when timer ticks.

If you are doing this a lot just use a ScheduledThreadPoolExecutor and then when that fires do what processing you can in that thread before enqueuing anything that modifies the scene graph back onto the render thread.

I decided to just use the tpf and count up.

private float timer, threshold; ... timer += tpf; if (timer > threshold) { threshold = randomFloatRange(1f,4f); timer = 0; launch(); }