25
Янв
2017

Настроить цикличный запуск

Доброго времени суток.
Есть код:

package ru.copy;

public class workProgram {
    public static void main(String[] args) throws IOException {

//МОЙ код для копирования данных
 }
}

Моя программа копирует файлы из одной папки в другую. Дело в том, что в папку исходник будут периодически заливаться файлы, происходить это будет на протяжении 15-20 часов и нужно перекопировать ВСЕ файлы. Помимо того эти файлы в папке исходнике будут находится там 1 час, а затем удаляться(потому и нужно их от туда скопировать).

Как сделать постоянное выполнение кода и процедуру отключения?

Самое простое сделать вечный цикл:

public class workProgram {
    public static void main(String[] args) throws IOException {
int a = 1;
while (true) {

//МОЙ код для копирования данных
             }
 }
}

Тогда программа уходит в вечный цикл, работает и файлы копируются. Но как сделать корректную остановку такого кода? Да и нет более аккуратного решения?

Да, пробовал запуск по интервалам времени:

   Timer timer = new Timer();
   TimerTask timerTask = new TimerTask() {
    public void run() {
       //мой код
    }
   };

  timer.schedule(timerTask, 5000, 10000);
  //первое число - когда он запуститься, второе - через сколько будет повторяться

Это некорректно, т.к. процедура может не успеть завершиться к нужному времени и запустится отдельный поток, что может привести к ошибке, да и опять же - как стопить такое?

P.S. наверное, по моей стилистике написания вы поняли, что я начинающий, потому очень прошу давать развёрнутые ответы с комментариями(я старался максимально понятно задать вопрос).

Источник: https://ru.stackoverflow.com/questions/619284/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-%D1%86%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B9-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA

Тебе может это понравится...

Добавить комментарий