Je construis un modèle de base d'agent simple dans Anylogic. Ce que je veux mettre en œuvre, c'est la famine des agents. L'agent a un paramètre hunger
. Je veux définir le hunger
+1 avec chaque heure. Je suppose que cela devrait être fait avec le cycle mais je ne sais pas comment commencer. Quelqu'un peut-il m'aider à construire le cycle?Travailler avec des unités de temps dans java
Répondre
Ceci est une solution, mais cela ne prend pas en compte le temps nécessaire pour terminer la méthode run().
public class HourRun implements Runnable {
private final ScheduledExecutorService scheduler
= Executors.newScheduledThreadPool(1);
int period = 1;
int delay = 0;
TimeUnit timeUnit = TimeUnit.HOURS;
ScheduledFuture scheduledFuture;
public HourRun() {
scheduledFuture = scheduler.scheduleAtFixedRate(this,
period, delay, timeUnit);
}
@Override
public void run() {
// This will be called every hour.
}
}
Si vous voulez qu'il soit une heure entre la fin de la méthode run(), utilisez ensuite l'utiliser à la place dans le constructeur.
int initialDelay = 0;
scheduler.scheduleWithFixedDelay(this, initialDelay, delay, timeUnit)
Cela attendre 1 heure entre toutes les opérations, les appels, thats en cours d'exécution dans votre méthode run(), puis l'appeler à nouveau. Je ne suis pas sûr si c'est ce que vous vouliez. Peut-être que c'est plus facile?
new Thread(new Runnable() {
@Override
public void run() {
try {
TimeUnit.HOURS.sleep(1);
} catch (InterruptedException e) {
// Code here
}
}
}).start();
Cela exécutera tout ce que vous voulez dans un thread séparé qui dormira la plupart du temps. Bonne chance, j'espère pouvoir vous aider d'une manière ou d'une autre.
Jetez un oeil à l'ici api temps java: https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html Regardez
à la classe java.time.Duration, il a la fonctionnalité que vous recherchez. Je ne peux pas offrir d'aide spécifique sans code affiché.
Ce serait une excellente solution. Cependant, j'ai découvert que anylogic a des fonctions de planificateur où vous pouvez simplement le configurer dans l'API :-) –