Похоже, ответ в вопросе; -)
Наличие потока ( не EDT ), обновляющего пользовательский интерфейс (курсор в вашем случае), может привести к такому видупроблема.
Следовательно, убедитесь, что ваш поток вызывает SwingUtilities.invokeLater()
(или invokeAndWait()
в зависимости от ваших потребностей).
Другая возможность (но это во многом зависит от того, что делает ваш поток, бездальнейшее описание с вашей стороны, трудно сказать) будет использовать SwingWorker
вместо потока.