Миллисекунды в таймере android

Я недавно начал разбираться с таймером в android. У меня есть вот такой код, но мне нужно, чтобы миллисекунды доходили до 60, а не до 10 (и при этом не было рассинхрона с реальным временем, именно это у меня не получалось) подскажите пожалуйста, как мне это сделать?

private void startTimer() {
    timer = new Timer();
    btnStart.setText(R.string.btn_stop);
    running = true;
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            runTimer();
        }
    }, 0, 100);
}

private void runTimer() {
    this.runOnUiThread(timerTick);
}

private void updateMs() {
    ms++;
    if (ms == 10) {
        updateSeconds();
    }
}

private void updateSeconds() {
    ms = 0;
    seconds++;
    if (seconds == 60) {
        seconds = 0;
        minutes++;
    }
    if (minutes == 60) {
        updateHor();
    }
}

private void updateHor() {
    minutes = 0;
    hourse++;
    if (hourse == 60) {
        ms = 0;
        minutes = 0;
        hourse = 0;
    }
}

private void updateTimerText() {
    timerText.setText(String.format(Locale.getDefault(), "%01d:%02d:%02d:%02d", hourse, minutes, seconds, ms));
}

private Runnable timerTick = new Runnable() {
    @Override
    public void run() {
        updateTimerText();
        updateMs();
    }
};

Ответы (1 шт):

Автор решения: Евгений Быков

Если вы хотите вообще без рассинхрона - то не получится(по крайней мере я не знаю простых способов)

Почему? Ну например, есть поток А(спящий) и ещё 10 потоков. Вот поток А подождал нужное для вас время(10 мс или нет - не важно). Дальше он проснулся, но не факт, что он сразу же начнёт своё выполнение. Планировщик может отдать следующие такты процессора другим потокам из 10и.

И когда А продолжит своё выполнение, в действительности пройдёт больше чем 10мс

→ Ссылка