2017-07-19 95 views
1

我在Anylogic中构建了一个简单的代理基础模型。我想实施的是代理商的匮乏。该代理具有hunger参数。我想每小时设置hunger +1。我想这应该与周期完成,但我不知道如何开始。有人可以帮助我建立这个循环吗?在java中使用时间单位

回答

0

这是一个解决方案,但是这并没有考虑完成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. 
     } 
    } 

如果你希望它是run()方法的终点之间的一个小时,然后在构造函数中使用使用这种代替。

int initialDelay = 0; 
    scheduler.scheduleWithFixedDelay(this, initialDelay, delay, timeUnit) 

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

new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       TimeUnit.HOURS.sleep(1); 
      } catch (InterruptedException e) { 
       // Code here 
      } 
     } 
    }).start(); 

这将运行任何你想在一个单独的线程,将睡在大多数时间。祝你好运,我希望我能以某种方式帮助你。

+0

这将是一个很好的解决方案。但是我发现,anylogic有一个调度器函数,你可以在API中设置它:-) –