Schlagt mich, wenn es falsch ist, aber iirc legt Swing eh einen eigenen Thread für sich an. Daran kanns also eher nicht liegen.
...
Bringt aber nicht viel, wenn man seine interne Logik an Funktionen wie redraw() knüpft. Ich bin nicht der große Swing-Experte, aber an sich sollte es machbar sein, daß das Programm irgendeine Berechnung völlig unabhängig vom aktuellen Zustand des UI durchführt.