有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java每间隔执行一个任务

所以我试着安排一个每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秒


共 (3) 个答案

  1. # 3 楼答案

    1)创建ScheduledExecutorService

    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
    

    2)创建并计划您的可运行:

    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();