10
Threads e Sockets Maurício Linhares – [email protected]

Aulas de Java Avançado 2- Faculdade iDez 2010

Embed Size (px)

Citation preview

Page 1: Aulas de Java Avançado 2- Faculdade iDez 2010

Threads e SocketsMaurício Linhares – [email protected]

Page 2: Aulas de Java Avançado 2- Faculdade iDez 2010

Sockets

Meio pelo qual aplicações Java acessam serviços pela rede;

Podem ser usados para transferência de dados usando TCP ou UDP;

É possível escrever clientes (que fazem conexões) e servidores (que aceitam conexões);

Page 3: Aulas de Java Avançado 2- Faculdade iDez 2010

Sockets clientes

São criados através da classe Socket, usando um host e porta na qual o socket deve se conectar;

São canais de comunicação bidirecional, onde o código pode escrever e ler informações ao mesmo tempo;

Page 4: Aulas de Java Avançado 2- Faculdade iDez 2010

Sockets servidores

Funcionam abrindo uma porta no host onde estão executando e aceitando conexões nessa porta.

Apenas um único servidor pode fazer o “bind” numa porta para cada placa de rede, não é possível ter vários servidores em uma única porta;

Quando aceitam conexões, essas conexões são Sockets comuns para os clientes;

Page 5: Aulas de Java Avançado 2- Faculdade iDez 2010

Threads e programação concorrente

Poder de processamento não deve aumentar no longo prazo;

Computadores com múltiplos cores são uma necessidade real;

Threads e programação concorrente são a saída para o uso desses recursos disponíveis;

Page 6: Aulas de Java Avançado 2- Faculdade iDez 2010

Threads – old style

Pegue um recurso específico;

Crie barreiras de acesso pra ele (synchronized);

Faça N threads utilizarem esse recurso;

Page 7: Aulas de Java Avançado 2- Faculdade iDez 2010

Threads – new style

Pegue um conjunto de informações;

Quebre elas em pedaços que falam sentido;

Quebre cada pedaço em uma unidade de computação;

Execute as unidades de computação e depois reúna os resultados;

Page 8: Aulas de Java Avançado 2- Faculdade iDez 2010

Programação concorrente...

...não é sobre contenção de dados;

...não é sobre compartilhar informações;

...não é sobre manter estado em objetos;

…não é sobre fazer tudo ficar mais rápido;

Page 9: Aulas de Java Avançado 2- Faculdade iDez 2010

Quando não usar threads?

Quando o seu problema não for “quebrável” em pequenos pedaços;

Quando não for possível executar os vários pedaços de forma concorrente (eles dependem uns dos outros);

Quando tudo o que você precisa fazer deve ser sincronizado;

Page 10: Aulas de Java Avançado 2- Faculdade iDez 2010

Criando um par cliente/servidor de chat em JavaUsando sockets, threads, XML, arquivos...