每个间隔执行一个任务
Perform a task each interval
所以我正在尝试安排一个时间实例,它每 10 秒重复一次。现在我有一些东西可以在 10 秒后执行任务,但是我该怎么做才能在完成后重置。
this.schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
chrs.get(0).getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(100100), chrs.get(0).getPosition());
}
}, time);
}
时间等于 10000 毫秒,因此是 10 秒。
或许考虑使用 ScheduledExecutorService
见http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledExecutorService.html
您可以改用 scheduleAtFixedRate 方法。
看到这个问题Creating a repeating timer reminder in Java
1) 创建 ScheduledExecutorService
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
2) 创建并安排您的 Runnable:
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Done:" + new Date(System.currentTimeMillis()));
// some long task can be here
executor.schedule(this, 10, TimeUnit.SECONDS);
}
};
//can be 0 if you want to run it fist time without 10 sec delay
executor.schedule(task, 10, TimeUnit.SECONDS);
如果您不关心可运行持续时间并且总是希望每 10 秒触发一次事件
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("Done:" + new Date(System.currentTimeMillis()));
}
}, /* same, can be 0*/ 10 , 10, TimeUnit.SECONDS);
3) 退出程序时使用这个
executor.shutdown();
所以我正在尝试安排一个时间实例,它每 10 秒重复一次。现在我有一些东西可以在 10 秒后执行任务,但是我该怎么做才能在完成后重置。
this.schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
chrs.get(0).getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(100100), chrs.get(0).getPosition());
}
}, time);
}
时间等于 10000 毫秒,因此是 10 秒。
或许考虑使用 ScheduledExecutorService
见http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledExecutorService.html
您可以改用 scheduleAtFixedRate 方法。
看到这个问题Creating a repeating timer reminder in Java
1) 创建 ScheduledExecutorService
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
2) 创建并安排您的 Runnable:
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Done:" + new Date(System.currentTimeMillis()));
// some long task can be here
executor.schedule(this, 10, TimeUnit.SECONDS);
}
};
//can be 0 if you want to run it fist time without 10 sec delay
executor.schedule(task, 10, TimeUnit.SECONDS);
如果您不关心可运行持续时间并且总是希望每 10 秒触发一次事件
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("Done:" + new Date(System.currentTimeMillis()));
}
}, /* same, can be 0*/ 10 , 10, TimeUnit.SECONDS);
3) 退出程序时使用这个
executor.shutdown();