2017-07-19 36 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中設置它:-) –