Java recursos avançados - multithreading
-
Upload
armando-daniel -
Category
Documents
-
view
448 -
download
6
Transcript of Java recursos avançados - multithreading
Curso de Java
by Antonio Rodrigues Carvalho Neto
Recursos Avançados
Threads
Threads
� As Threads são segmentos executados no processador de forma sequencial.
� O Java diferentemente de outras linguagens possui primitivas de multithreading como parte da própria linguagem. Isto facilita a portabilidade e a criação de aplicações multithread.
Exemplos de uso de Thread
� O uso de Threads é muito comum nas aplicações, pois normalmente não podemos esperar a execução de algumas tarefas para iniciarmos outras.
� Imagine esperar o navegador trazer todas as informações na tela para que se possa selecionar qual link se deseja, ou então aguardar o download de uma musica por completo antes que possa começar a ouví-la .
� Para evitar isso as aplicações utilizam-se do multiprocessamento. No caso do tocador de músicas, uma Thread se encarrega de baixar o arquivo de com a música e outra Thread se encarrega de tocar os trechos ja baixados da música.
Threads (Estados)Novo
Executável
Morto
Em ExecuçãoBloqueado
.start()
selecionada
Termina o método run()
.sleep() ou quando termina o tempo
quando o recurso estiver disponível
Solicita algum método bloqueado, ou algum recurso indisponível
Thread (Pilha)
MSN
Internet Explorer
Antivirus
Java
Processos a serem executados
CPU
Disco
Memoria
Portas
Vai para o estado Bloqueado
Thread� Etapas para criar uma Thread
1. Crie uma classe que implemente a interface Runnable e sobrescreva o método public void run() . Este método deve conter o código a ser executado na Thread.
Sintaxe:public class MinhaThread implements Runnable {
public void run() { while (true) { System.out.println(“ Minha Thread “); } } }
2. Crie um objeto da classe criadaSintaxe:<Classe> <objeto que representa o Job> = new <Classe>() ;
Exemplo:MinhaThread job = new MinhaThread();
Thread� Etapas para criar um Thread (Continuação)
1. Coloque o objeto criado em um segmento para ir para a pilhaSintaxe:Thread <objeto que representa o Segmento> = new Thread( <objeto que representa o Job>);
Exemplo:Thread th1 = new Thread (job);
2. Inicie a execução do segmento colocando-o em modo executável
Sintaxe:<objeto que representa o Segmento>.start();
Exemplo:th1.start();
Exercício – Sistema de Chat
� Vamos criar um sistema de chat que permite que vários clientes se conectem com o servidor.
� Faça um Socket Server e uma classe Thread que sirva para tratar cada objeto socket separadamente. De forma que todos os caracteres enviados pelas conexões sejam impressos na console.
� Cada vez que o accept retornar um Socket, crie uma Thread para tratar este socket e coloque-a na memória.
Referências
� Java como programar 6ª ediçãoCapítulo 23
pags. 786 a 793
� Use a cabeça Java 2ª ediçãoCapitulo 15
pags. 342 a 366
� Caelum Java e Orientação a ObjetosCapitulo 19
pags. 227 a 231