The timer time runs on a thread other than the event dispatch (or EDT) thread, which is the thread that runs the code in the ActionListener. Thus, even if the actionPerformed code is slow, the timer will continue to fire independently and will stand in line of its actionPerformed code in the event queue, which is most likely to be copied, and the event flow will be clogged, and the application will be unresponsive or poorly responsive.
The return point is to avoid invoking any code that takes a little time in the event stream, as this will render the GUI inactive. Consider using SwingWorker for such cases.
Edit: see trashgod comment below for victory!
source share