Да, это может определенно помешать.
Если у вас много запланированных действий, вам, скорее всего, лучше использовать ScheduledThreadPoolExecutor для планирования задач.
Чтобы убедиться, что запланированная работа выполняется в потоке Swing, вы можете использовать оболочку, такую как эта, для Runnable
, которые вы запланировали:
public abstract SwingRunnable implements Runnable
{
public final void run()
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public final void run()
{
runInSwing();
}
}
}
protected abstract void runInSwing();
}
Еще лучше (если вы знаете, что делаете ;-)), вы можете поместить только те части запланированной работы, которые на самом деле нуждаются в для выполнения в потоке Swing, в поток Swing. Код оболочки, который я здесь дал, будет запускать весь вашего кода в потоке Swing, что аналогично тому, что вы в настоящее время делаете, используя javax.swing.Timer
.