1) в основном вам нужно было только знать, будет ли ваш код выполнен на EDT (все изменения должны быть сделаны на EDT),
2) если у вас есть какие-либо сомнения, можно протестировать
if (EventQueue.isDispatchThread()) {
или (это то же самое и возвращает true, если на EDT)
if (SwingUtilities.isEventDispatchThread()) {
больше здесь или здесь
3) все выходные данные фоновых задач должны быть заключены в invokeLater()
, базовые сведения о Concurency в Swing