Timer.isRunning() sollte dir weiterhelfen ...
In einer Schleife verwendet, blockiert es die GUI nur.
Timer timer = new Timer(1000, einActionListener) {
public void stop() {
super.stop();
// hier dein Code - dieser wird unmittelbar nach einem stop()-Aufruf
// ausgeführt.
}
};