Olá desenvolvedores, hoje implementares controles de parada e continuação das threads, dando sequência ao trabalho que estamos desenvolvendo. Trabalhar com threads pode inicialmente parecer algo complicado, visto que se trata de um conceito novo. E também porque as escolas de programação e universidades normalmente não ensinam a trabalhar com programação paralela ou concorrente. Ou passam por elas superficialmente.

No tutorial de hoje aprendemos a colocar dados em uma fila/lista adicionada a uma thread. Assim enquanto adicionamos novos dados, os já inseridos continuarão sendo processados em segundo plano.

São muitos os exemplos de uso das filas, como as filas de impressão que muitas vezes ocupam as impressoras. Filas de processos quando temos mais de um programa sendo executados. Filas de tarefas, quando se tem um conjunto de dados para serem processados, tanto para gerar Notas Fiscais quanto, para mandar e-mails em massa. Enfim, todos estes dados podem ser organizados em uma fila, para que seja estabelecido uma ordem de processamento.

Mas queremos o poder de cancelar estes processamentos a tempo e hora que quisermos, e reiniciá-los, ou seja continuar o processamento. Então como proceder para interromper o processo e retomá-lo posteriormente? É o que faremos hoje, implementaremos as linhas de código que nos permitirão prosseguir.

AUTOMATIZANDO A THREAD

Mas antes vamos voltar ao código para implementar uma automatização que irá simular o envio de 100 de e-mails em massa. Dessa forma na classe TelaTimeThread escreveremos um laço de repetição que será capaz de realizar esta função. Assim, o bloco de código que recebe os dados da tela e os adiciona a fila, deverá ser envolvido pelo for.

Desse modo quando clicarmos do botão “ADD LISTA”, cem “disparos” serão gerados e adicionados a lista e tudo isso acontecerá em segundo plano. A tela ficará livre para que possamos adicionar/gerar tantos dados distintos quanto desejarmos. Estes dados serão adicionados em lotes de 100, ou até que o processamento seja interrompido.

Observe que se clicarmos no botão “PARAR”, conseguiremos interromper o processamento da thread que roda em segundo plano, mas não conseguiremos retomá-lo. Então tratemos de corrigir isso.

IMPLEMENTANDO A CONTINUAÇÃO DA THREAD

A melhor forma de fazer isso é matando o processo tanto no Java quanto no sistema operacional, como? Passando um null para a fila, onde implementamos o botão de “PARAR”.

Fila = null

Entretanto, quando clicarmos novamente no botão de “ADD LISTA”, para dar continuidade a adição dos dados, antes de entrar no laço de repetição, é preciso que a thread esteja rodando.

Faremos então uma verificação, implementando uma estrutura de decisão. Assim, se fila for igual a null, criamos um novo objeto ImplementacaoFilaThread e concluímos com um start, para que ela possa ser retomada.

If(fila == null){
fila = new ImplementacaoFilaThread();
fila.start();
}

EM POUCAS PALAVRAS

Dessa forma poderemos para e dar continuidade ao processamento da thread sempre que desejarmos. Apresentamos aqui a lógica por trás dessa implementação. Saber adicionar os dados de uma thread a uma fila, processá-los, interrompê-los, remover, continuar, são conhecimentos de suma importância para sua carreira como programador a partir deste ponto. Trata-se de um conhecimento essencial.

ssim, espero que tenham compreendido, e se não compreenderam reportem-nos suas dúvidas, mas antes certifique-se de ter assistido a aula pelo menos mais uma vez, ou mesmo recorrido a este tutorial. E espero também que tenham praticado, praticado e praticado. Eu fico por aqui, nos vemos no próximo tutorial.