есть большие проблемы, кроме той, которую вы заметили:
- не позволяйте потокам работать вхолостую, они в конечном итоге замораживают пользовательский интерфейс
- каждый доступ к Swingкомпонент должен произойти в EDT
Вы можете решить обе эти проблемы проще всего, используя javax.swing.Timer
ActionListener nextSecond = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// get time ...
timeLabel.setText(...);
}
}
new Timer(1000, nextSecond).start();