Если у вас есть только один субработник, я не уверен, какой смысл - почему вы не можете просто выполнить задачу в теле программного обеспечения?
Если у вас есть несколько параллельных подзадач, и вы хотите сгруппировать их и сообщить об их ходе, вам не нужны отдельные SwingWorkers - просто запустите потоки или используйте исполнителя для планирования задач. Если вы хотите опубликовать промежуточные результаты, передайте блокирующую очередь задачам, где они будут отправлять обновления.
Основной (или, точнее, единственный) SwingWorker будет брать элементы из этой очереди и обновлять графический интерфейс, используя методы publish () / process (). Когда подзадача заканчивает работу, она может выдвинуть специальный токен в очередь (или ноль). Вот как вы можете отслеживать невыполненные подзадачи и решать, когда завершить цикл.
В качестве альтернативы, если у вас есть куча автономных задач, вы можете использовать CompletionService и обновить состояние аналогичным образом с ПО.