Criar uma thread que não seja pausada pelo JOptionPane

Olha, eu estou trabalhando em um programa que usa Reconhecimento de Voz. Em uma determinada parte do programa preciso criar fazer uma pergunta simples ao usuário, como aquelas janelinhas: “Deseja salvar o arquivo?” daí preciso personalizar esse Dialog que exibe o JOptionPane pra que ele possa receber a resposta através do reconhecimento de voz, mas também preciso que ele continue fazendo aquela pausa que o JOptionPane faz na thread principal, da mesma forma dos métodos do JOptionPane daí entrei em um probleminha: Como posso pausar a Thread principal, porém fazer com que meu sistema continue fazendo o reconhecimento de voz?

Tentei criar uma thread separada pra colocar o reconhecedor pra rodar nela e mesmo assim o Dialog continua parando essa thread também.

Crie seu próprio JDialog modal. Não use JOptionPane.

A idéia da thread está certa. Mas você tem que estudar direito esse recurso para saber o que está fazendo.

Eu uso um JDialog modal, mas nele eu adiciono um JOptionpane, já que é ele que pausa a thead principal. Então você quer dizer que eu tenho que construir ele no braço mesmo? Sem usar o JOptionPane?

Porque pra mim que dessa forma a thread principal não seria pausada, e eu preciso que ela seja pausada, porém preciso fazer com que minha classe de reconhecimento seja independente da thread principal, para que ela não seja pausada no momento em que eu chamar o JDialog

a classe JDialog ao ser instanciada possui parâmetros que fazem isso. Exemplo:

JDialog seuDialog = new JDialog(seuJFrame, true);

[quote=Ivan Alves]a classe JDialog ao ser instanciada possui parâmetros que fazem isso. Exemplo:

JDialog seuDialog = new JDialog(seuJFrame, true);[/quote]

Isso vai fazer com que o Dialog seja ou não modal, e o que eu quero é que ele pause a thread principal, por isso adicionei o JOptionPane. Mas a questão não é essa, e sim como colocar meu motor de reconhecimento pra rodar em uma thread independente da thread principal para que ele não seja pausado pelo Dialog?

O que você terá que fazer é criar suas próprias Threads que será executada independente da Thread principal. Procure alguns tutoriais na internet ou algum livro sobre o mesmo.
Achei esse tópico aqui também http://www.devmedia.com.br/utilizando-threads-parte-1/4459.

Galera, fiz uns testes aqui, tava pensando que o JOptionPane parava todas as threads exceto a dele, pois tinha criado uma thread e iniciado ela no main e não tinha dado certo, eu estava totalmente errado, ele para só a dele, o que tava acontecendo era que a thread era um objeto de Main, a solução q achei pra executar o reconhecedor em uma thread independente foi não criar a thread explicitamente, criei uma classe q implementa Runnable e criei um ExecutorService no main mesmo pra rodar ela, dai quando o main é parado, ou até msm acaba, ela n pára, pois as threads que o ExecutorService cria não tem nada a ver com a thread principal, agora só preciso projetar bem minha aplicação pra fazer as comunicações de forma correta entre as threads, tomando cuidado com deadlocks, acessos simultâneos a um espaço na memória… essas coisas, vlw mesmo pelo esforço galera.