А ведь это не так :-\ Проверял, метод работает примерно секунду)
вывод
В г. Лондон сейчас 23:59:58!
В г. Лондон сейчас 23:59:59!
В г. Лондон сейчас полночь!
В г. Лондон сейчас 0:0:1!
package com.javarush.task.task16.task1613;
/*
Big Ben clock
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Solution {
public static volatile boolean isStopped = false;
public static void main(String[] args) throws InterruptedException {
Clock clock = new Clock("Лондон", 23, 59, 57);
Thread.sleep(4000);
isStopped = true;
Thread.sleep(1000);
}
public static class Clock extends Thread {
private String cityName;
private int hours;
private int minutes;
private int seconds;
public Clock(String cityName, int hours, int minutes, int seconds) {
this.cityName = cityName;
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
start();
}
public void run() {
try {
while (!isStopped) {
printTime();
Thread.sleep(1000);
}
} catch (InterruptedException e) {
}
}
private void printTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
Calendar calendar = Calendar.getInstance();
String time = hours + ":" + minutes + ":" + seconds;
try {
calendar.setTime(simpleDateFormat.parse(time));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.SECOND, 1);
hours = calendar.get(Calendar.HOUR_OF_DAY);
minutes = calendar.get(Calendar.MINUTE);
seconds = calendar.get(Calendar.SECOND);
if (hours == 0 && minutes == 0 && seconds == 0) {
System.out.println(String.format("В г. %s сейчас полночь!", cityName));
} else {
System.out.println(String.format("В г. %s сейчас %d:%d:%d!",
cityName, hours, minutes, seconds));
}
}
}
}