Ich habe einen Timer, der je nach Einstellung (z. B. nach 5 Sekunden) beendet wird:

ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        new Stop();
        timer.shutdown();
    }
}, (TIME_DAYS * 86400000) + (TIME_HOURS * 3600000) + (TIME_MINUTES * 60000) + (TIME_SECONDS * 1000), 1, TimeUnit.MILLISECONDS);

TIME_DAYS etc. sind Nutzereingaben, die in Millisekunden umgerechnet werden.

Jedoch habe ich das Problem, dass der Timer manchmal nach weniger als 5 Sekunden beendet wird (z. B. 2 oder 3 Sekunden). Woran liegt das oder kann es liegen?

Dieser Timer wird nach einem ActionEvent gesartet und wenn dieser Timer um ist, wird das Programm oder der Thread beendet.