Главный файл рисунка для заданий в регулярные времена

У меня есть случай, который не первый раз, которому я противостою, и я хотел бы ревизию кода.

Тема состоит в том, что у меня есть задание, что нужно скроллировать периодически X (не точно X, точность - желательная, но не уполномоченная, приближение хорошо).

То, что я обычно делаю, так это следующее:

class Servicio implements Runnable {

    private volatile boolean running = true;

    @Override
    void run() {
        while(this.isRunning()) {
            try { 
                // operaciones I/O y procesamiento

                // Espero el tiempo X
                Thread.sleep(1000);
            } catch (InterruptedException ie) {
               // no hago nada, que de vez en cuando el ciclo se ejecute
               // de forma no muy precisa no es un problema. 
            } catch (otras excepciones que me interesa atrapar) {
               // quizá stopRunning(), quizá no
               // ya que las partes de I/O tienen retry polices,
               // pero si por ejemplo recibo File Not Found o 404, no quiero seguir.
            } 
        }
    }

    public synchronized void stopRunning() {
       this.running = false;
    }

    public synchronized boolean isRunning() {
       return this.running;
    }
}

Adicionalmente, stopRunning() смоги быть призванным с другого thread.

Вопрос:

Какой альтернативный рисунок я могу использовать? Каковы преимущества / невыгоды этого метода напротив предложенного метода?

2
задан 15.03.2016, 18:33
1 ответ

Если ты думаешь использовать Java сигара, он рекомендовал бы тебе использовать framework ExecutorService путь интерфейс ScheduledExecutorService чтобы манипулировать твоими заданиями, которые работают периодически.

Если ты можешь использовать framework, я рекомендую тебе Quartz, так как он позволяет создавать crons и выполнять задание из-за каждого cron. Также, позволяют выполнять их синхронизированным способом. Это значит, что, для cron, если задание отсрачивает больше уважаемого времени, другие задания вместо того, чтобы работать и возможно разлагать данные, они останутся приклеенными и будут надеяться на то, что освобождены (или будьте отрезан по какому-то другому разуму) незаконченные задания.

2
ответ дан 24.11.2019, 14:44

Теги

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