/ / Temps de boucle de thread constant Java - java, multithreading

Temps de boucle de filetage constant Java - Java, multithreading

Je veux avoir un fil qui boucle à une constantenombre de fois par seconde, par exemple une boucle de rendu qui vise un framerate constant. La boucle ralentirait évidemment si le temps nécessaire dépasse le temps imparti.

Merci.

Réponses:

3 pour la réponse № 1

Que diriez-vous

ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(0, delay, TimeUnit.MILLI_SECONDS, new Runnable() {
public void run() {
// do something
}
});

ou

long delay = ....
long next = System.currentTimeMillis();
while(running) {
// do something
next += delay;
long sleep = next - System.currentTimeMillis();
if (sleep > 0)
Thread.sleep(sleep);
}

0 pour la réponse № 2

Il existe deux techniques de base à prendre en compte:

  1. séparer la mise à jour de votre modèle ou de l’état du monde de son rendu.
  2. Si vous avez déjà fait cela, vous pouvez attendre / attendre suffisamment de temps avant de restituer des éléments ou ignorer le rendu de certaines images si vous ne respectez pas votre planning.

Je peux recommander deux bons tutoriels sur la manière de mettre en œuvre quelque chose comme une boucle de jeu en java / android. Le premier sur les bases est http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/ et le second se concentre sur le nombre constant d'images par seconde: http://obviam.net/index.php/the-android-game-loop/. Je pense que les leçons s’appliquent également à regualar java.