Thread é um fluxo de execução que ocorre dentro do contexto(limites) de um processo, onde cada processo pode ter de apenas uma até várias threads. Mas uma thread pertence sempre apenas a um único processo.
Mesmo sabendo que cada processador (CPU) pode executar apenas um fluxo de execução por vez, as threads são executadas "paralelamente" na visão do usuário, pois o escalonamento delas é tão rápido para o usuário que o mesmo tem a impressão de estarem executando ao mesmo tempo. Porém, em computadores com mais de um processador ocorre o paralelismo real onde cada fluxo de execução (Thread) está executando em um processador e isso pode trazer um aumento significativo no desempenho de uma aplicação.
Além da utilização de threads para aumentar o desempenho de processamento elas são extremamente úteis quando é necessário interagir com o usuário ao mesmo tempo que se deve processar outra tarefa em um mesmo programa. Um exemplo simples da utilização de threads é o corretor ortográfico do Microsoft Office Word que executa em uma thread e paralelamente outra thread se encarrega de aceitar a digitação do usuário. Outro exemplo relevante da utilização de threads no dia a dia são os browsers para navegação na internet que separam a carga de uma página em várias threads e assim cada imagem, tabela, texto, download, controle da navegação, e o que mais estiver na página, serão carregados "simultaneamente" na visão do usuário.
Utilizando threads em java
Em java é utilizada a classe Thread para implementar programas que utilizam mais de um fluxo de execução. Esta classe possui o método "public void run()" que será executado quando a thread for chamada. Para isso, uma classe que deseja executar como uma thread deve herdar a classe Thread sobrescrevendo o método run() e inserindo nele o que deve ser executado como fluxo paralelo de processamento. Para executarmos uma thread utilizamos o método "start()" e para finalizar a execução, caso a thread não seja capaz de se finalizar por conta própria, é utilizado o método "interrupt()".
Neste exemplo de programa em java utilizando threads são criadas duas threads para executarem simultaneamente exibindo no console uma contagem sequencial.
Classe que implementa a thread:
Classe para criar e executar as threads:
Este deverá ser o resultado da execução do programa exibida no console, além de ser exibida uma janela de confirmação.
Mario - 0
Luigi - 0
Mario - 1
Luigi - 1
Luigi - 2
Mario - 2
Luigi - 3
Mario - 3
Mario - 4
Luigi - 4
Mario - 5
Luigi - 5
Mario - 6
Luigi - 6
...
Note, que na verdade, não são apenas dois fluxos de execução que serão executados, mas sim três fluxos (Threads). Um para cada objeto contador e outro fluxo de execução para o próprio main que continua "interagindo" com o usuário enquanto as demais threads estão processando.
Este tópico tratou apenas da utilização e o conceito básico de threads, pois se tratando de threads existem muito mais funções poderosas para serem abordadas como o sincronismo entre threads, grupos de threads, deadlocks, etc.
Bom.
ResponderExcluirMas você não fez o código que eu pedi :-)
Thread 1 | X
Thread 2 | Y
Abraços,
Diego Pacheco