user988052, конечно, прав - если у вас нет многоядерного ЦП, выполнение вычислений в шести разных потоках фактически замедлит работу вашего приложения из-за накладных расходов, связанных с созданием и администрированием потоков.
Если вы хотите выполнить эти вычисления в шести отдельных потоках, тем не менее, вы можете использовать SwingWorker в качестве управляющего потока и создать 5-6 новых потоков в нем.Тогда можно использовать ExecutorService
, поскольку он использует пул потоков и, таким образом, сводит к минимуму накладные расходы, связанные с созданием и удалением потока.
Редактировать: ответить на ваш комментарий:
Я думаю, что лучшим способом было бы реализовать вычисления в Runnable
(чтобы каждый из шести расчетов мог выполняться отдельно), затем просто использовать ExecutorService
, создать экземпляр Runnable
шесть раз и использоватьExecutorService.submit(Runnable task)
.Вы можете сделать все это в методе SwingWorker.doInBackground()
.
Вы никогда не должны вызывать метод run()
самостоятельно - пусть это будет сделано Thread / ExecutorService.