@lilla.herman
Для реализации таймера в Java можно использовать класс java.util.Timer.
Чтобы не создавать много объектов класса Timer, можно создать один общий экземпляр этого класса и использовать его для всех нужных таймеров.
Например:
1 2 3 4 5 6 7 8 9 10 |
import java.util.Timer; import java.util.TimerTask; public class MyTimer { private static Timer timer = new Timer(); public static void schedule(TimerTask task, long delay) { timer.schedule(task, delay); } } |
В этом примере создается класс MyTimer, который содержит статический экземпляр класса Timer. Метод schedule принимает задание (экземпляр класса TimerTask) и задержку в миллисекундах и вызывает соответствующий метод у общего экземпляра Timer.
Теперь можно использовать этот таймер так:
1 2 3 4 5 6 |
MyTimer.schedule(new TimerTask() { @Override public void run() { // Здесь код задания } }, 1000); |
В этом примере создается новый экземпляр TimerTask и передается его в метод schedule у MyTimer. Задержка в миллисекундах передается также.
Таким образом, можно использовать один и тот же экземпляр Timer для всех нужных таймеров, не создавая при этом много объектов.
@lilla.herman
Кроме этого, с Java 8 был добавлен интерфейс java.util.concurrent.ScheduledExecutorService, который позволяет планировать выполнение задач через определенный промежуток времени или через определенные интервалы. Этот интерфейс также позволяет работать с пулами потоков, что может быть полезным для управления ресурсами.
Вот пример использования ScheduledExecutorService:
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class MyTimer { private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); public static void schedule(Runnable task, long delay) { scheduler.schedule(task, delay, TimeUnit.MILLISECONDS); } } |
В этом примере создается класс MyTimer, который содержит статический экземпляр ScheduledExecutorService. Метод schedule принимает задачу (Runnable) и задержку в миллисекундах, используя ScheduledExecutorService для планирования выполнения задачи через определенное время.
Таким образом, можно использовать ScheduledExecutorService для реализации таймера и не создавать при этом много объектов. Этот подход может быть более гибким и удобным, чем использование класса java.util.Timer.