ScheduledThreadPoolExecutor опаздывает

У меня есть этот простой фрагмент кода:

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(10);

    Runnable r = new Runnable() {

        @Override
        public void run() {
            System.err.println(Calendar.getInstance().getTime());
        }
    }; 

    exec.scheduleAtFixedRate(r,0, 500, TimeUnit.MILLISECONDS);
}

На одной машине этот код работает как положено. Выход консоли:

  • Вт 03 июля 10 :32 :34 EEST 2012
  • Вт 03 июля 10 :32 :34 EEST 2012
  • Вт 03 июля 10 :32 :35 EEST 2012
  • Вт 03 июля 10 :32 :35 EEST 2012
  • Вт 03 июля 10 :32 :36 EEST 2012
  • Вт 03 июля 10 :32 :36 EEST 2012...

Однако на другой машине отметка времени на консоли показывает, что ScheduledThreadPoolExecutor опаздывает.Под опозданием я подразумеваю пару секунд:)

  • Вт 03 июля 10 :32 :34 EEST 2012
  • Вт 03 июля 10 :32 :37 EEST 2012
  • Вт 03 июля 10 :32 :40 EEST 2012
  • Вт 03 июля 10 :32 :44 EEST 2012
  • Вт 03 июля 10 :32 :50 EEST 2012
  • Вт 03 июля 10 :32 :55 EEST 2012...

Сведения о первой машине, на которой успешно выполняется код:

i3 Виндовс 7 64 бит JRE 1.6.0.30

Сведения о второй машине, на которой планирование задерживается:

Двухъядерный Windows ХР 32 бит JRE 1.6.0.18

Интересно, почему такая разница. Какие-либо предложения ?

Заранее спасибо.

7
задан uahakan 3 July 2012 в 07:57
поделиться