JAVA Thread sleep демонстрация отсчета

Хочу вывести отсчет до выполнения события, пользователю на экран(пока что в system.out.println) выполнил, такой код, получаю однократное написание 60 секунд. как сделать, чтоб каждую секунду было обновление отсчета?

Thread run = new Thread(new Runnable() {
       
        public void run() {
            while(true){
                 int i = 60;
                 while (i>0){
                  System.out.println("Remaining: "+i+" seconds");
                try {
                    
                     i--;
                    Thread.sleep(60000); 
                   sendEmail();
                   
                } catch (InterruptedException ex) {
                }}
            }
        }
    });
    run.start(); 

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

Автор решения: BccHnw

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

И InterruptedException лучше не гасить внутри вечного цикла, иначе нормальными средствами этот thread не остановить.

Thread run = new Thread(new Runnable() {
    public void run() {
        try {
            while(true){
                int i = 60;
                while (i > 0) {
                    System.out.println("Remaining: "+i+" seconds");
                    i--;
                    Thread.sleep(1000);
                }
                System.out.println("Sending e-mail");
                sendEmail();
            }
        }
        catch (InterruptedException ex) {
            // ok, terminating
        }
    }
});
run.start();
→ Ссылка