使用 java 中的时间单位
Working with time units in java
我正在 Anylogic 中构建一个简单的代理基础模型。我要实现的是代理人的饥饿。代理有一个 hunger
参数。我想每小时设置 hunger
+1。我想应该用循环来完成,但我不知道如何开始。有人可以帮我建立循环吗?
在此处查看 java 时间 api:https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
查看 java.time.Duration class,它具有您正在寻找的功能。如果没有发布一些代码,我无法提供具体帮助。
这是一个解决方案,但是这没有考虑完成 运行() 方法的时间。
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.
}
}
如果您希望在 运行() 方法完成之间间隔一小时,请在构造函数中使用 use this 代替。
int initialDelay = 0;
scheduler.scheduleWithFixedDelay(this, initialDelay, delay, timeUnit)
这将在所有操作和调用之间等待 1 小时,即 运行 在您的 运行() 方法中,然后再次调用它。
我不确定这是否是您想要的。
也许这样更容易?
new Thread(new Runnable() {
@Override
public void run() {
try {
TimeUnit.HOURS.sleep(1);
} catch (InterruptedException e) {
// Code here
}
}
}).start();
这将 运行 在一个大部分时间都处于休眠状态的单独线程中提供您想要的任何内容。祝你好运,希望我能以某种方式帮助你。
我正在 Anylogic 中构建一个简单的代理基础模型。我要实现的是代理人的饥饿。代理有一个 hunger
参数。我想每小时设置 hunger
+1。我想应该用循环来完成,但我不知道如何开始。有人可以帮我建立循环吗?
在此处查看 java 时间 api:https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
查看 java.time.Duration class,它具有您正在寻找的功能。如果没有发布一些代码,我无法提供具体帮助。
这是一个解决方案,但是这没有考虑完成 运行() 方法的时间。
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.
}
}
如果您希望在 运行() 方法完成之间间隔一小时,请在构造函数中使用 use this 代替。
int initialDelay = 0;
scheduler.scheduleWithFixedDelay(this, initialDelay, delay, timeUnit)
这将在所有操作和调用之间等待 1 小时,即 运行 在您的 运行() 方法中,然后再次调用它。 我不确定这是否是您想要的。 也许这样更容易?
new Thread(new Runnable() {
@Override
public void run() {
try {
TimeUnit.HOURS.sleep(1);
} catch (InterruptedException e) {
// Code here
}
}
}).start();
这将 运行 在一个大部分时间都处于休眠状态的单独线程中提供您想要的任何内容。祝你好运,希望我能以某种方式帮助你。