首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中使用时间单位

在java中使用时间单位
EN

Stack Overflow用户
提问于 2017-07-19 22:59:39
回答 2查看 489关注 0票数 1

我正在用Anylogic构建一个简单的智能体基础模型。我想要实现的是智能体的饥饿。代理有一个hunger参数。我想设置每小时的hunger +1。我想这应该通过循环来完成,但我不知道如何开始。有人能帮我构建这个循环吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-19 23:14:02

这是一种解决方案,但是没有考虑完成run()方法所需的时间。

代码语言:javascript
运行
复制
    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.
         }
    }

如果您希望run()方法的结束间隔为一个小时,那么可以在构造函数中使用this。

代码语言:javascript
运行
复制
    int initialDelay = 0;
    scheduler.scheduleWithFixedDelay(this, initialDelay, delay, timeUnit)

这将在你的run()方法中运行的所有操作和调用之间等待一个小时,然后再次调用它。我不确定这是不是你想要的。也许这样更简单?

代码语言:javascript
运行
复制
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                TimeUnit.HOURS.sleep(1);
            } catch (InterruptedException e) {
                // Code here
            }
        }
    }).start();

这将在一个独立的线程中运行您想要的任何东西,该线程将在大部分时间处于休眠状态。祝你好运,我希望我能以某种方式帮助你。

票数 0
EN

Stack Overflow用户

发布于 2017-07-19 23:03:33

看看这里的java time api:https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html

看看java.time.Duration类,它具有您正在寻找的功能。我不能提供特定的帮助没有一些代码张贴。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45194336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档