Есть метод
public int TIMER_funk(int seco) {
this.sec = seco;
timer_sec.schedule(new TimerTask() {
@Override
public void run() {
Platform.runLater(new Runnable() {
@Override
public void run() {
if (sec > 0) {
sec--;
int minutes = sec / 60;
int seconds = sec % 60;
SECONDS.setTextFill(seconds < 4 ? Color.RED : Color.BLACK);
MINUTES.setText((minutes < 10 ? "0" : "") + minutes);
SECONDS.setText((seconds < 10 ? "0" : "") + seconds);
} else if (sec == 0) {
sec = 9;
int count = 1;
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("You need a break");
alert.setHeaderText(null);
alert.setContentText("5 minutes!!!");
alert.showAndWait();
}
}
});
}
}, 1000, 1000);
return 1;
}
В другом методе мне нужно чтобы этот запускался больше одного рвза
TIMER_funk(15);
TIMER_funk(22);
ВОТ ТАК ПОЛУЧИЛОСЬ, но скорость увеличивается.
ScheduledExecutorService execService = Executors.newScheduledThreadPool(5);
execService.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
TIMER_funk(15);
}
public void run2() {
}
public void run3() {
TIMER_funk(10);
}
}, 0, 16, TimeUnit.SECONDS);
Решение на "вскидку". Создайте наследника Runnable интерфейса, в котором объявите очередь LinkedBlockedQueue. В нее вы будете добавлять ту задачу, которую надо выполнить по таймеру с заданными параметрами. После получения задачи из очереди, запускаете ее через ScheduledExecutorService и делаете для ScheduledFuture метод get() дожидаясь пока она исполнится.
Таким образом - два раза добавите - два раза выполнится. Три - значит три. Причем последовательно.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники