SwingWorker

Pessoal, boa tarde!

Preciso de uma ajudar de vocês, estou utilizando o SwingWorker para que quando o usuário aperte em um botão executa certa ação através de uma Thread, até ai ok, só que se o usuário aperta o botão novamente quando uma já está em execução ele roda uma outra, portanto fica rodando 2 Threads ao mesmo tempo. Como que faço para que se uma Thread já esteja em execução não possa ser executa outra até o fim da que está rodando?

Eu executo o código abaixo no botão:

Worker a = new Worker();
a.execute();

E esse o SwingWorker:

static class Worker extends SwingWorker<Void, Void> {

        @Override
        protected void done() {
            System.out.println("done");
           
        }
        
        @Override
        protected Void doInBackground() {
            try {
                System.out.println("working");
                Thread.sleep(5000);

            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }

Crie uma lista pública, a cada vez que você executar a Thread coloque na lista uma identificação que X thread está sendo executada. E ao inicio do código de execução da Thread faça a verificação se a Thread em questão já está sendo executada ou não.

Da pra fazer isso com uma simples variável boolean, ou então um List, Array, HashMap, ai vai do que se adequar mais.