Atraso fixo de Java util.timer não está funcionando?

Eu tentei ver como funciona o método de atraso fixo do timer (cronograma), mas parece que eu falhei.

Este é o meu código:

public class Timer_Test {    
  static Timer _a_timer;
  static int num_o_proc = 0;
  static int timer_call = 0;
  static double prog_begin_time;

public static void main(String[] args) {
    prog_begin_time = System.currentTimeMillis();

    _a_timer = new Timer();

    _a_timer.schedule(new TimerTask() {
        @Override
        public void run() {
            timer_call++;
            System.out.println(timer_call + " timer start   at " + (System.currentTimeMillis() - prog_begin_time));
            process();


            System.out.println(timer_call + " timer end   at " + (System.currentTimeMillis() - prog_begin_time));
            if (timer_call >= 5) {
                System.exit(0);
            }
        }
    }, 1000, 2000);
}

public static void process() {
    num_o_proc++;
    int local_num_o_proc = num_o_proc;
    System.out.println(local_num_o_proc + " process start   at " + (System.currentTimeMillis() - prog_begin_time));

    double _a_ = 0;
    for(int x=0; x<Integer.MAX_VALUE/2; x++) {
        _a_++;
    }
    System.out.println(local_num_o_proc + " process end   at " + (System.currentTimeMillis() - prog_begin_time));
  }
}

Isso é o que eu recebo:

1 temporizador a partir de 1000.0

1 início do processo em 1000.0

1 final do processo em 2109,0

1 fim do temporizador em 2109,0

2 temporizador a partir de 3000.0

2 início do processo em 3000.0

2 final do processo em 4109,0

2 final do temporizador em 4109,0

3 temporizador a partir de 5000.0

3 início do processo a 5000,0

3 process final em 6109.0 .....

O temporizador 2 não deve começar em 4109 (em vez de 3000), pois a primeira tarefa do temporizador terminou em 2109 (2109 + 2000)? Eu tentei usar 'scheduleAtFixedRate' e me deu exatamente o mesmo resultado. Fiz algo de errado? Ou há algum conceito que não consigo entender?

questionAnswers(1)

yourAnswerToTheQuestion