Синхронизация таймера выполняется в потоке, отличном от потока диспетчеризации событий (или EDT), который является потоком, который выполняет код в ActionListener.Таким образом, даже если код actionPerformed работает медленно, таймер продолжает работать независимо и помещает свой код actionPerformed в очередь событий, которая, скорее всего, будет скопирована, а поток событий будет засорен, и приложение будет не отвечать или плохо реагировать.
Главная точка зрения состоит в том, чтобы избегать вызова любого кода, который занимает немного времени в потоке событий, так как это сделает GUI не отвечающим.Рассмотрите возможность использования SwingWorker для подобных случаев.
Редактировать: Пожалуйста, смотрите комментарий trashgod ниже для победы!