Не работает таймер в конструкторе

Есть наследник от класса Man. Наследник должен быть неуязвим указанное время после создания. Жизнь он наследует у Man. Я инициализирую константу a и заменяю на health на нее. Делаю таймер. Не работает. Подскажите как исправить.

public class SuperMan extends Man {

    int godMinutes;

    final int a = 100;
    double timer_s = 0;// начальное время для таймера
    double timer_f = 0;// конечное время
    double timer_d = godMinutes * 60000; // (количество миллисекунд) длительность таймера

    // таймер с timer_d - время выполнения метода или команды
    public void timer_play() {
        if (timer_s == 0) { //если таймер не запущен
            timer_s = System.currentTimeMillis();// получаем текущее время милсек
            timer_f = timer_s + timer_d; // конечное время
            this.health = a;
        }
        if (timer_f <= System.currentTimeMillis()) { //если время вышло
            //команда или метод(если есть) по финишу
            this.health = INITIAL_HEALTH;
        }
    }
    public SuperMan (int godMinutes) {

        this.godMinutes = godMinutes;
        timer_play();
    }
}

или типа такого делать

public class GodTimeHero extends Hero {

    int godMinutes;

    final int a = 100;
    

    public GodTimeHero(int godMinutes) {
        this.godMinutes = godMinutes;
        double timer_s = System.currentTimeMillis();
        double timer_d = this.godMinutes * 60000;
        double timer_f = timer_s + timer_d;
        
         while (timer_s < timer_f) {
             this.health=1000000000;
         }

    }
}

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

Автор решения: Serhii Dikobrazko
 while (timer_s < timer_f) {
     this.health=1000000000;
 }

Это точно наботать не будет

Если вы хотите сдлеать неуязвимым персонажа, до тех пора не пройдет какое-то время, так сделайте банальную проверку времени при нанесении урона

private undeadUntil = System.currentTimeMillis() + 60000;

public damagePerson(int damage){
...

    if(System.currentTimeMillis() < undeadUntil){
        return;
    }

    this.health =- damage;
}
→ Ссылка
Автор решения: Ramiz

несмотря на то что решение с таймером конкретной задачи не является целесообразным, вопрос был все же про таймер (возможно это решение будет полезно в других задачах):

import java.util.Timer;
import java.util.TimerTask;

//...

class Man {
    static final int INITIAL_HEALTH = 10;
    volatile int health = INITIAL_HEALTH;
    // ...
}
class SuperMan extends Man {
    int godMinutes;
    final int a = 100;
    final Timer timer = new Timer(true);
    public SuperMan(int godMinutes) {
        this.godMinutes = godMinutes;
        timer_play();
    }

    void resetHealth() {
        health = INITIAL_HEALTH;
    }

    private void timer_play() {
        health = a;
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                SuperMan.this.resetHealth();
            }
        }, godMinutes * 60_000L);
    }
}
→ Ссылка