11
Curso de Java by Antonio Rodrigues Carvalho Neto

Java recursos avançados - multithreading

Embed Size (px)

Citation preview

Page 1: Java   recursos avançados - multithreading

Curso de Java

by Antonio Rodrigues Carvalho Neto

Page 2: Java   recursos avançados - multithreading

Recursos Avançados

Page 3: Java   recursos avançados - multithreading

Threads

Page 4: Java   recursos avançados - multithreading

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.

Page 5: Java   recursos avançados - multithreading

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.

Page 6: Java   recursos avançados - multithreading

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

Page 7: Java   recursos avançados - multithreading

Thread (Pilha)

MSN

Internet Explorer

Antivirus

Java

Processos a serem executados

CPU

Disco

Memoria

Portas

Vai para o estado Bloqueado

Page 8: Java   recursos avançados - multithreading

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();

Page 9: Java   recursos avançados - multithreading

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();

Page 10: Java   recursos avançados - multithreading

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.

Page 11: Java   recursos avançados - multithreading

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