Java: выполните функцию после определенного числа секунд

У меня есть определенная функция, что я хочу быть выполненным после 5 секунд. Как я могу сделать это в Java?

Я нашел javax.swing.timer, но я не могу действительно понять, как использовать его. Похоже, что я ищу что-то путь, более простой затем, этот класс обеспечивает.

Добавьте простой пример использования.

134
задан LittleBobbyTables 2 February 2013 в 14:21
поделиться

4 ответа

new java.util.Timer().schedule( 
        new java.util.TimerTask() {
            @Override
            public void run() {
                // your code here
            }
        }, 
        5000 
);

РЕДАКТИРОВАТЬ:

javadoc говорит:

После того, как последняя живая ссылка на объект Timer уходит и все невыполненные задачи завершили выполнение, поток выполнения задачи таймера корректно завершается (и становится объектом сборки мусора ). Однако это может занять сколь угодно много времени.

207
ответ дан 23 November 2019 в 23:54
поделиться

Примерно так:

// When your program starts up
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

// then, when you want to schedule a task
Runnable task = ....    
executor.schedule(task, 5, TimeUnit.SECONDS);

// and finally, when your program wants to exit
executor.shutdown();

В Executor есть различные другие фабричные методы, которые вы можете использовать вместо них, если вам нужно больше потоков В бассейне.

И помните, когда вы закончите, важно выключить программу-исполнитель. Метод shutdown () полностью отключит пул потоков после завершения последней задачи и будет блокироваться до тех пор, пока это не произойдет. shutdownNow () немедленно завершит пул потоков.

52
ответ дан 23 November 2019 в 23:54
поделиться

В вашем исходном вопросе упоминается "Таймер качания". Если на самом деле ваш вопрос связан с SWing, тогда вам следует использовать Swing Timer, а НЕ util.Timer.

Прочтите раздел учебника Swing « Как использовать таймеры » для получения дополнительной информации.

4
ответ дан 23 November 2019 в 23:54
поделиться

вы можете использовать функцию Thread.Sleep ()

Thread.sleep(4000);
myfunction();

Ваша функция будет выполнена через 4 секунды. Однако это может приостановить всю программу ...

4
ответ дан 23 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: