Как сделать так чтобы метод запускался после отработки такого же метода(с другим значением переменной)

202
30 марта 2017, 19:19

Есть метод

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);
Answer 1

Решение на "вскидку". Создайте наследника Runnable интерфейса, в котором объявите очередь LinkedBlockedQueue. В нее вы будете добавлять ту задачу, которую надо выполнить по таймеру с заданными параметрами. После получения задачи из очереди, запускаете ее через ScheduledExecutorService и делаете для ScheduledFuture метод get() дожидаясь пока она исполнится.

Таким образом - два раза добавите - два раза выполнится. Три - значит три. Причем последовательно.

READ ALSO
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

Привет, использую java 16, соответственно беру sqljdbc4

323
Java - Оптимизация кода

Java - Оптимизация кода

Можно как-то оптимизировать, метод изложенный нижеУ меня создаются картинки различного цвета с помощью генератора случайных чисел, всё работает...

199
Sqlite android не создаются таблицы

Sqlite android не создаются таблицы

При запуске приложение не создает таблицы в sqlite

408
Сделать ограничение

Сделать ограничение

У меня есть поле, в которое я ввожу имя пользователя, а проверка на валидацию следующая:

224