Предложение по реализации планировщика Java 7 - PullRequest
1 голос
/ 07 октября 2019

Я знаю, что есть много платформ для Планировщика, а также собственный Планировщик JDK. Я не могу использовать сторонние фреймворки / API. Существующий планировщик использует только Java API. Это выглядит следующим образом: -

    public class Timer implements Runnable {

    private Thread runner;
    private int pause;
    private Task task;
    private boolean running;

    public Timer(int pause, Task task) {
        this.pause = pause;
        this.task = task;
        runner = new Thread(this, "Timer");
    }

    public void run() {
        try {
          while (running) {
            task.run(); // long running task
            synchronized (runner) {
                runner.wait(pause);
            }
        }
    } catch (InterruptedException ie) {
        /* The user probably stopped the */
    }
 }

Интерфейс и класс: -

public interface Task {

    void run();
 }

public class TaskManager implements Task {

private static boolean firstRun = true;
private static Timer timer;
private static String lastRun;


public static void start(int interval) {

    // stop any previous
    if (timer != null) {
        timer.stopTimer();
        timer = null;
    }

    // Start a new one
    TaskManager taskManager = new TaskManager ();
    timer = new Timer(interval * 1000, taskManager );
    timer.startTimer();
}    


  public void run() {
  // long running code
  }

public void setDelay(int p) {
    pause = p;
}

public void startTimer() {
    running = true;
    runner.start();
}

public void stopTimer() {
    running = false;
    runner.interrupt();
  }
}

Из сервлета я называю как:

private void startTaskManager() {
    TaskManager.start(30);
}

Мои требования, что это будетвыполнить задачу в потоке в методе run (). Есть много задач, которые будут выбраны одна за другой из базы данных.

Приведенная выше реализация имеет некоторые проблемы. На приведенной выше реализации он имеет собственный интерфейс Task и реализован собственный Timer.

Я думаю, что есть другой лучший способ достичь этого планировщика. Пожалуйста, предложите мне.

...