Таймер - это то, что нужно использовать для выполнения периодических задач в фоновом режиме.Под капотом используется отдельный поток для выполнения задач, поэтому вам не нужно связываться с потоками самостоятельно.Медлительность вашего Swing-приложения обычно связана с длительными задачами в потоке обработки событий (EDT).Скорее всего, ваша задача таймера - поместить Runnable в EDT, как только вы получите данные для обновления пользовательского интерфейса.Проверьте, что это делает, и убедитесь, что он только обновляет пользовательский интерфейс и не выполняет другую работу, которую можно выполнить в фоновом режиме.Проверьте эффективность того, как вы обновляете пользовательский интерфейс.
См. Документацию Java по Threads и Swing и эту статью по Повышение производительности приложений с помощью SwingWorker (в этом последнем рассказывается о SwingWorker не Timer, а о концепции принятияработа с EDT одинакова).
Если вы разместите некоторый код, мы сможем более точно определить проблему.