Upload
mauricio-linhares
View
1.029
Download
0
Embed Size (px)
Citation preview
Threads e SocketsMaurício Linhares – [email protected]
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);
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;
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;
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;
Threads – old style
Pegue um recurso específico;
Crie barreiras de acesso pra ele (synchronized);
Faça N threads utilizarem esse recurso;
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;
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;
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;
Criando um par cliente/servidor de chat em JavaUsando sockets, threads, XML, arquivos...