Java действие повторяется каждые 5 секунд - PullRequest
0 голосов
/ 19 января 2020

Ладно, так же могут помочь нормальные java программисты, но это плагин для Minecraft, я хочу, чтобы он выполнял действие каждые 5 секунд, начиная с загрузки плагина ...

public void onEnable(){
            getLogger().info("TBC Enabled");

            //~~ the statement from here till the next note is what I want to happen every 5 seconds

            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage("N/A");
            }

            //~~ end of statement I want to repeat every 5 seconds

            }

, что блок кода это то, что он делает, когда плагин запускается

Ответы [ 2 ]

2 голосов
/ 19 января 2020

Вы можете сделать то, что называется планированием повторяющейся задачи, этот пример был взят с форумов Bukkit.

Bukkit.getScheduler().scheduleRepeatingTask(this, new Runnable() {
    @Override
    public void run() {
        // The statement you want to run every 5 seconds.
    }
}, 0L, 100L); // 20 ticks = 1 second

Просто отредактируйте комментарий в ходе выполнения с оператором, который вы хотите запустить, и он должен работать нормально .

1 голос
/ 19 января 2020

Это можно сделать с помощью базового c ExecutorService. Вы можете создать ScheduledExecutorService, который является реализацией ExecutorService, а затем запланировать запуск, который выполняется каждые 5 секунд.

        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();

        service.scheduleAtFixedRate(() -> {
            //TODO do something here
        }, 0, 5, TimeUnit.SECONDS);
...